Note: The db usage in my case may not be typical.
did not work well for me:
administration tools are not user friendly
could not quite figure out how to load data from a file
Nice adminstration tools
Deployment is very simple and well explained in documentation
Speed: in my case slower than MySQL
* Preferered choice in my case
Very nice db, but deployment is rather heavy
I was considering HSQLDB as my primary choice of in memory database. After reading its history on http://en.wikipedia.org/wiki/HSQLDB :
HSQLDB is a relational database management system written in Java. It is based on Thomas Mueller's discontinued Hypersonic SQL Project.[1] He later developed H2 as a complete rewrite.
I decided to give H2 a try. Bellow is the benchmark from the H2's website, which looks quite nice. Hopefully my application will achieve similar results.
My application. I am currently running my algorithm on the top of Taste recommender engine using MySQL. A complete set of experiments for my algorithm and existing to produce results takes 3 days on a Core2 Duo machine. I need to try more than 20 different settings = 60 days. So I decided to try to speed it up. In addition I don't have permission to install db on the supercomputing cluster at my university so in memory db hopefully will solve both of my problems.
Since memory's I/O is much faster than disk I/O this should translate into significant speed up (assuming your db can fit in memory)
Could be run in embeded mode -- all you need is java and you can run it locally inside of your application (no additional sotware needs to be installed on the server etc.).
Note: I am using this setup for explorative learning algorithm; it is not a typical usage of the recommender system.
Single pass: 138 - 3,819 ms (depending on configuration)
# Create Table
CREATE TABLE taste_preferences (
user_id VARCHAR(10) NOT NULL,
item_id VARCHAR(10) NOT NULL,
preference FLOAT NOT NULL,
time_stamp VARCHAR(10),
PRIMARY KEY (user_id, item_id)
)
# Create Indexes
CREATE INDEX IDX_USER_ID ON TASTE_PREFERENCES ( USER_ID )
CREATE INDEX IDX_ITEM_ID ON TASTE_PREFERENCES ( ITEM_ID )
CREATE INDEX IDX_PREFERENCE ON TASTE_PREFERENCES ( PREFERENCE )
# Load data from file
INSERT INTO TASTE_PREFERENCES SELECT * FROM CSVREAD('/home/neil/tmp/u.txt');
see AL_CF.java for more details
Some parts of code are not well documented; the javadoc seems to be out of sync. Had to browse for this one for a while, untill found it.
// Create DB Connection
// H2
String driverName = "org.h2.Driver";
String url = "jdbc:h2:~/test";
String user = "sa";
String pwd = "";
org.h2.jdbcx.JdbcDataSource db = new org.h2.jdbcx.JdbcDataSource();
db.setUser(user);
db.setPassword(pwd);
db.setURL(url);
java.util.NoSuchElementException: Can't retrieve more due to exception: org.h2.jdbc.JdbcSQLException: The result set is not scrollable and can not be reset. You may need to use conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY). [90128-66]
Changed com.planetj.taste.impl.model.jdbc.AbstractJDBCDataModel
* NEIL -- Modified ResultSetUserIterator to fix the following Exception:
* TODO: Do it in a better way
org.h2.jdbc.JdbcSQLException: Syntax error in SQL statement INSERT INTO TASTE_PREFERENCES SET[*] USER_ID=?, ITEM_ID=?, PREFERENCE=? ON DUPLICATE KEY UPDATE PREFERENCE=? ; expected ., (, DEFAULT, VALUES, (, SELECT, FROM; SQL statement:
INSERT INTO taste_preferences SET user_id=?, item_id=?, preference=? ON DUPLICATE KEY UPDATE preference=? [42001-66]
at org.h2.message.Message.getSQLException(Message.java:89)
at org.h2.message.Message.getSQLException(Message.java:93)
at org.h2.message.Message.getSyntaxError(Message.java:103)
at org.h2.command.Parser.getSyntaxError(Parser.java:454)
at org.h2.command.Parser.parseSelectSimple(Parser.java:1445)
at org.h2.command.Parser.parseSelectSub(Parser.java:1366)
at org.h2.command.Parser.parseSelectUnion(Parser.java:1249)
at org.h2.command.Parser.parseSelect(Parser.java:1237)
at org.h2.command.Parser.parseInsert(Parser.java:826)
at org.h2.command.Parser.parsePrepared(Parser.java:343)
at org.h2.command.Parser.parse(Parser.java:265)
at org.h2.command.Parser.parse(Parser.java:241)
at org.h2.command.Parser.prepareCommand(Parser.java:209)
at org.h2.engine.Session.prepareLocal(Session.java:213)
at org.h2.engine.Session.prepareCommand(Session.java:195)
at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:970)
at org.h2.jdbc.JdbcPreparedStatement.<init>(JdbcPreparedStatement.java:1206)
at org.h2.jdbc.JdbcConnection.prepareStatement(JdbcConnection.java:161)
at org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.prepareStatement(PoolingDataSource.java:302)
at com.planetj.taste.impl.model.jdbc.AbstractJDBCDataModel.setPreference(AbstractJDBCDataModel.java:420)
at com.planetj.taste.impl.recommender.AbstractRecommender.setPreference(AbstractRecommender.java:81)
at org.hrstc.taste.al.AL_CF.evaluate(AL_CF.java:243)
at org.hrstc.taste.al.AL_CF.main(AL_CF.java:80)
Solution:
INSERT INTO TASTE_PREFERENCES SET USER_ID='22', ITEM_ID='378', PREFERENCE='5.0' ON DUPLICATE KEY UPDATE PREFERENCE='5.0'
Was giving the above exception. Replaced it with:
INSERT INTO TASTE_PREFERENCES (user_id, item_id, preference) VALUES ('22', '378', '5.0') ON DUPLICATE KEY UPDATE PREFERENCE='4.0'
Then ... ON DUPLICATE KEY UPDATE PREFERENCE='4.0' part was not a standard SQL syntax (perhaps specific to MySQL).
A better way would be to use an ANSI/ISO standard command MERGE ( instead of other db specific variants ) e.g.:
MERGE INTO TASTE_PREFERENCES(user_id, item_id, preference) key(user_id,item_id) VALUES ('22', '378', '4.0')
wrote H2JDBCDataModel.java
I finaly got H2 to run (most of the changes where migrating incompatible SQL from MySQL to standard SQL)
The performance of it was rather slow:
INFO: It took ms: 2,119,766
Used memory-only mode http://www.h2database.com/html/features.html#memory_only_databases
INFO: It took ms: 140,568
Thats a 10 fold improvement
Let JVM use more memory; let db use more memory
Did not help
Installed TPTP for eclipse but does not work; could not figure out why
Using NetBeans to do profiling; is throwing some of the old error for some reason.
Fix: The problem with error was that class in jar was not correctly overwritten by NetBeans
For some reason when running from NetBeans userNeighbourhood.size = 0; but when running from command line the same files it is not
Fix: The problem with error was that class in jar was not correctly overwritten by NetBeans
Surprisingly the peformance of MySQL MyISAM and MEMORY engine are almost identical.
Performance of H2 is 10x slower than MySQL. The difference of code between two implementations is that for
H2: MERGE INTO
MySQL: INSERT ... ON DUPLICATE KEY UPDATE
INFO: It took ms: 20,574
Mar 24, 2008 11:05:09 AM org.hrstc.taste.al.AL_CF <init>
INFO: log running..
943
Mar 24, 2008 11:05:11 AM org.hrstc.taste.al.AL_CF getTestUsers
INFO: Selected userID: 421
Mar 24, 2008 11:05:11 AM org.hrstc.taste.al.AL_CF evaluate
INFO: AL Type: random
Mar 24, 2008 11:05:13 AM org.hrstc.taste.al.AL_CF evaluate
INFO: User's Stats:
[{MAE=5.0}]
Mar 24, 2008 11:05:13 AM org.hrstc.taste.al.AL_CF evaluate
INFO: It took ms: 1577
Mar 24, 2008 11:05:34 AM org.hrstc.taste.al.AL_CF evaluate
INFO: User's Stats:
[{MAE=5.0}, {MAE=0.8614681}]
Mar 24, 2008 11:05:34 AM org.hrstc.taste.al.AL_CF evaluate
INFO: It took ms: 20574
CREATE TABLE `taste`.`taste_preferences` (
`user_id` varchar(10) NOT NULL,
`item_id` varchar(10) NOT NULL,
`preference` float NOT NULL,
PRIMARY KEY (`user_id`,`item_id`),
KEY `user_id` (`user_id`),
KEY `item_id` (`item_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
INFO: It took ms: 19,781
Mar 24, 2008 2:55:58 PM org.hrstc.taste.al.AL_CF <init>
INFO: log running..
943
Mar 24, 2008 2:56:00 PM org.hrstc.taste.al.AL_CF getTestUsers
INFO: Selected userID: 421
Mar 24, 2008 2:56:00 PM org.hrstc.taste.al.AL_CF evaluate
INFO: AL Type: random
Mar 24, 2008 2:56:02 PM org.hrstc.taste.al.AL_CF evaluate
INFO: User's Stats:
[{MAE=5.0}]
Mar 24, 2008 2:56:02 PM org.hrstc.taste.al.AL_CF evaluate
INFO: It took ms: 1522
Mar 24, 2008 2:56:22 PM org.hrstc.taste.al.AL_CF evaluate
INFO: User's Stats:
[{MAE=5.0}, {MAE=0.760892}]
Mar 24, 2008 2:56:22 PM org.hrstc.taste.al.AL_CF evaluate
INFO: It took ms: 19781
Mar 24, 2008 2:56:38 PM org.hrstc.taste.al.AL_CF evaluate
INFO: User's Stats:
[{MAE=5.0}, {MAE=0.760892}, {MAE=0.86437464}]
Mar 24, 2008 2:56:38 PM org.hrstc.taste.al.AL_CF evaluate
INFO: It took ms: 16243
CREATE TABLE `taste`.`taste_preferences` (
`user_id` varchar(10) NOT NULL,
`item_id` varchar(10) NOT NULL,
`preference` float NOT NULL,
PRIMARY KEY (`user_id`,`item_id`),
KEY `user_id` (`user_id`),
KEY `item_id` (`item_id`)
) ENGINE=MEMORY DEFAULT CHARSET=latin1
INFO: It took ms: 214,899
Mar 24, 2008 3:01:21 PM org.hrstc.taste.al.AL_CF <init>
INFO: loaded data
943
Mar 24, 2008 3:01:23 PM org.hrstc.taste.al.AL_CF getTestUsers
INFO: Selected userID: 421
Mar 24, 2008 3:01:23 PM org.hrstc.taste.al.AL_CF evaluate
INFO: AL Type: random
Mar 24, 2008 3:01:24 PM org.hrstc.taste.al.AL_CF evaluate
INFO: User's Stats:
[{MAE=5.0}]
Mar 24, 2008 3:01:24 PM org.hrstc.taste.al.AL_CF evaluate
INFO: It took ms: 1865
Mar 24, 2008 3:04:59 PM org.hrstc.taste.al.AL_CF evaluate
INFO: User's Stats:
[{MAE=5.0}, {MAE=0.7894972}]
Mar 24, 2008 3:04:59 PM org.hrstc.taste.al.AL_CF evaluate
INFO: It took ms: 214899
Starting DB: java -cp ./lib/hsqldb.jar org.hsqldb.Server -database.0 file:mydb -dbname.0 xdb
java -cp ./lib/hsqldb.jar org.hsqldb.util.DatabaseManager
keywords: hsqldb load data file csv
Use Text Table ; also see src/org/hsqldb/sample/load_binding_lu.sql
Error: table not found in statement [SET TABLE SOURCE] / Error Code: -22 / State: S0002
Possible Reason: Text Tables cannot be created in memory-only databases (databases that have no script file).
Tried example from src/org/hsqldb/sample/load_binding_lu.sql
CREATE TEXT TABLE binding_tmptxt (
id integer,
name varchar(12)
);
Error: Database is memory only in statement [CREATE TEXT TABLE binding_tmptxt] / Error Code: -63 / State: S1000
Solution: this statement is not allowed for in memory database; start server db instance
When trying sudo a server [org.hsqldb.util.DatabaseManager] get the following error:
java.sql.SQLException: socket creation error
Solution: none
Performance of H2 is 10x slower than MySQL. The difference of code between two implementations is that for
H2: MERGE INTO
MySQL: INSERT ... ON DUPLICATE KEY UPDATE
Changed it but did not make a difference.
Disabled/Enabled Connection pooling but did not produce significant affect either.
Since performance still is not good rewrote code for the methods that take too long; and wrote new classes optimized for my task as seen in the next blog posting ....
http://www.h2database.com/html/features.html#trace_options
TRACE_LEVEL_SYSTEM_OUT=3
Do also java code generation; this way can benchmark it against MySQL and see where the problem is.
Turn on logging finest
See performance for my AL method and optimize for it - since it is the slowest one anyway.
If performance still is not good may need to rewrite code for the methods that take too long; or write new classes optimized for my task
For example: may compute user neighborhood only for the specific items; since I need to get estimates for only a few items, etc.
HSQLDB memory mode
MySQL's MEMORY (HEAP) Storage Engine http://dev.mysql.com/doc/refman/5.0/en/memory-storage-engine.html
Comments
rLXITjhTbCRrhLPLyP
Beautiful site! buy soma 3703 alprazolam without prescription mvan buy vibramycin :DDD buy azithromycin mdrlqx diazepam without a prescription :-OO buy xenical yms inderal 2715 clomid 191435 amoxicillin tfgsic
jTzcVjImFeYCgehX
Beautiful site! terbinafine =-P buy aricept 565259 buy lexapro 947535 buy viagra =-) buy lorazepam 4896
iaXtMoYCiikG
Very interesting! buy antabuse 420 order diazepam %-PP alendronate 656 buy cytotec online >:]]] buy lorazepam online gew
xIPiJnGIfVEdjBRpq
Nice site. order antabuse 6499 tamoxifen 3300 buy soma online :-PP vardenafil 6236 order viagra online 347 buy ultram 947999 buy adipex >:-))) cytotec %]] cheap lorazepam vtphc
qTciCuZDyiPpPbUw
Perfect article. buy klonopin 288 order furosemide hspspk buy antabuse :OOO soma wgle buy aricept >:] buy zithromax online jyouy diazepam online 23407 buy fosamax online 046 cheap lorazepam =]]
toAkEmAdcydGg
Very interesting! order lasix 628123 order aricept 54966 buy zoloft 57937 buy viagra online %-PPP meridia 200
RtWRZsKfEaFFFzR
Very interesting! buy cialis fdgun nolvadex :O buy generic viagra 98975 buy doxycycline 3945 buy zithromax %-DD acomplia dibi accutane :] xanax 8[[[ hoodia 47410 lasix 8-DDD antabuse >:-DD buy synthroid 0046 tramadol 05139 buy cytotec 8]]] xenical >:)) zoloft 676 buy prozac old flagyl %OO
rExahoimBqUFuC
Beautiful site! cialis online fcyfp viagra generic ldnqgn buy ultram >:-( acomplia online 11218 accutane ddj disulfiram 562176 buy levitra 8685 buy propecia ect buy buspirone 8322 buy ciprofloxacin ojzmm tramadol hcl %]] diazepam without a prescription :OOO buy retin a >:-))) cheap phentermine 9237 buying viagra online 3162
DvnsIGuJUmIGCM
Nice site. doxycycline umys buy ultram 120846 effexor xr 8)) valium rise buy antabuse :-DDD klonopin wmtqup levitra 01469 buy carisoprodol rjmjb alprazolam without prescription fvhqba propecia 8]]] diazepam without a prescription 604 retin-a 817 buy viagra online 7056 inderal 04891 citalopram hydrobromide acvxr flagyl 8O
dZrirsPsvSrojLfeSKb
Incredible site! nexium jau generic viagra trmp buy adipex online nls metformin 854 xanax online tqt buy clomid durjpe soma 4179 synthroid online hpok alprazolam online 2848 buy finasteride online 863 tramadol hcl =-PPP order cytotec 434667 buy diazepam hnk alendronate 66481 buy zolpidem camiiw buy zoloft online 434315 viagra online 55945 valium qoc
ilmscjyUKlAMXQDL
Very good site! buy nolvadex online =((( cialis :-] cheap viagra >:[[ buy aricept 544909 buy zithromax 6262 hoodia diet pills 34654 furosemide hew order antabuse wcpouy buy carisoprodol sxferm buy finasteride online :-[ buspar :PP ciprofloxacin hcl hhaixq tramadol lfvl order cytotec saz ambien cr uirhso zoloft mwe order prozac >:-OOO sibutramine 486780 amoxicillin fyz
XlulcrRlEhDIkF
Beautiful site! buy pheromones =-] order nexium :-[[ tamoxifen :-[[[ tadalafil 14476 lamisil cream 310 buy adipex ploi buy rimonabant >:( buy valtrex >:DDD buy antabuse 8-[[ clonazepam qwqem buy furosemide online mkijp soma lbba synthroid >:-]]] alprazolam %-) buy tramadol online swjeo buy xenical awxha buy fosamax online %((( buy inderal online ncb buy celexa flgq
mlgtSjhXwbqmnE
Nice site. cheap pheromones izw buy cialis 63260 esomeprazole 825 nolvadex >:-))) buy ultram online aqquut buy acomplia %[[ xanax nka isotretinoin %-O buy lexapro online dxnle order furosemide 24992 buy levitra peazfv proscar %-DD buy orlistat online 518548 buy diazepam 793920 misoprostol lvlf buy ativan online 833901 order phentermine 425789
SnVlpFoWak
Beautiful site! buy ativan =-( adipex 33728 ultram pwzfsl buy accutane 977 buy lexapro %]] buy hoodia yaco buy diflucan >:DD buy valium 561348 antabuse 710854 buy lasix mebbzm soma %-[ tramadol bgzma retin a 10595 buy zoloft 3155 inderal 398378 buy prozac 533
gznCqNtWcagUuSGA
Good site. pheromones 7759 tamoxifen 4086 generic nexium 208200 buy azithromycin 48981 metformin hcl 322 buy ultram pdhtl buy acomplia >:-))) effexor withdrawal 372 cheap xanax online 5503 buy lexapro =-OO buy furosemide rac cheap levitra twrjcg alprazolam without prescription ped retin-a 95255 phentermine no prescription gmgbyl buy sertraline ywmmy buy propranolol 4691 buy metronidazole 98906 buy reductil 0504
YiFlTsEhaNGMnM
Very good site! cialis uyund buy generic viagra lww ativan withdrawal 5062 adipex 62608 azithromycin %OOO buy ultram hikp buy metformin :-]] effexor xr 590 xanax online 378 clomid 114 hoodia diet pills =-[[ buy vardenafil :-) buy synthroid 796543 proscar evofgn buy cipro %[ ambien cr 649 citalopram hbr rzgvgk buy metronidazole nmv
nSCPyOoIFUUrV
Beautiful site! buy ultram online 939 buy effexor online >:[[ lorazepam online kdsmov buy hoodia hnwko buy valtrex :DDD antabuse 83662 buy levitra 7578 synthroid fisi order alprazolam 63080 buy tramadol online 3467 buy misoprostol online bkeres retin a cream 8-(( buy ambien online =-DD phentermine 37 5mg :] buy inderal lueys valium 2363
XLxdLMfHGffEtFezGnL
Good site. buy aricept :[[[ buy adipex online hyc doxycycline online 470 order effexor kwemdi order lorazepam 20187 diflucan 02585 antabuse ltyi buy lasix :-[ buy propecia 36698 cipro xccfqn diazepam online tlkvb retin a cream 353863 buy zolpidem 78719 inderal =-PP viagra %PP cheap valium 89620 flagyl 882758 buy amoxicillin 8OO
CDtqdnmyzyyme
Incredible site! pheromones :( order nolvadex >:-PPP cheap viagra rddsg aricept scj doxycycline hyclate 0212 order ultram 8096 buy acomplia online :-OO buy xanax =-PPP clomiphene unbc buy valtrex >:PP rivotril ujur buy soma 9660 ultram yxze cheap ativan 8-]]] phentermine 37 5mg bcubxy generic zoloft %))) buy viagra >:-OOO order valium 561142
qHwGXFMfgOjPgc
Good site. nolvadex elu soma ipewt synthroid =-[[ buy buspar lwpbob cipro 8753 buy aricept 305 lexapro 3234 prozac %)) buy amoxicillin cpe
xKdEoWFbAkYhmRWph
Very interesting! buy carisoprodol ssk buy propecia kvxd adipex no prescription lwxawz doxycycline hyclate sym alendronate sodium aozadl xenical =))) acomplia online fxv buy fluconazole 985 sibutramine veiho
uVrdfEVTYrXl
Perfect article. buy synthroid mfthrd tramadol hcl 5960 aricept =-OOO buy viagra online 98888 buy celexa cpq buy valtrex 9633 buy lorazepam >:))) valium >:))) reductil bnoe
WZUEGsYWUmIDNuMSsAy
Good site. tamoxifen isr tramadol hcl qclqp buy cytotec 860289 buy zithromax :-OO isotretinoin 63300 fluconazole 6493
TVBAtFYXzLMOQvHgX
Beautiful site! buy antabuse online 147 synthroid 8-O order diazepam :((( order ativan vre ambien 607 inderal la hcbjbi hoodia >:-] buy meridia %-OO
pIUVbXQkeAfJs
Nice site. buy furosemide 172 nolvadex online 5550 buy levitra online 656 cheap ultram 688499 accutane wrmdiq buy clomid bbd amoxil 8-(((
ZdeMdizvDX
Good site. buy levitra 4074 synthroid tpxc buy doxycycline iurcw buy xanax qnmgih lexapro =-[[[ buy meridia 6765 buy amoxicillin 155793
qsVgnUtVekmFS
Very interesting! pheromones %)) buy nolvadex erroq buy xanax >:-DD citalopram 1507 lorazepam 72261
IZyFNOxQSyd
Very good site! buy generic viagra 67676 generic levitra 395 buy alendronate ofswa buy zoloft ged buy propranolol %-(
OoDoerUsBtD
Very good site! buy propecia online yzavq buy lamisil online vusxz buy azithromycin mtwxav buy fosamax online cxuar buy ambien 765 viagra uk ebl buy lorazepam kipw clomid >:-[[
ZJzlnEEEhVoO
Nice site. klonopin 8-[[ buy ultram 125752 order zithromax 00285 buy accutane 052 lexapro online :OOO
nYGdbPpcuB
Very good site! buy nexium iye buy orlistat online %-] cheap ultram =-]] effexor xr 288545 buy xanax online qdmrxq fluoxetine =[[[ buy viagra online 88889 inderal 480802 buy valium 0622
TRNojZVjXkXl
Perfect article. pheromones 4876 order nexium bnx buy cialis online sdlixr order alprazolam %OO synthroid gzinhg adipex 7347 cheap ativan 4339 buy lorazepam 789 flagyl wbv
KUYiSAbSDlsqffd
Very interesting! buy meridia >:-[[ diazepam swmhi buy levitra 873 klonopin online dvh klonopin %-)))
JnjykYdhcbLQp
Nice site. klonopin >:OO cheap levitra 610 ambien online qyqlu buy lorazepam vvqbx order ambien 68156 buy lorazepam 220 buy generic viagra umlz
SnhnRzwVqPfU
Good site. klonopin >:-PPP generic viagra online >:OO sildenafil 71994 buy cialis qygp ultram >:DDD levitra 8-[ xanax 3697 tramadol 6343
YaxpGnxjNVOIFpj
Very interesting! buy alprazolam fut tramadol online 856587 buy adipex online 8108 sildenafil >:-P ativan 0728 phentermine 37 5mg 881515 buy levitra %-((( buy vardenafil >:PPP buy diazepam rsxfi
gtEnspYiZjDPTJgQI
Good site. alprazolam %-]] diazepam :PPP meridia whth tadalafil 987050 xanax online scqd buy viagra online kwi
hswRoZAPymNYcPXQP
Nice site. generic viagra >:)) buy tramadol >:-OOO buy diazepam qpw buy lorazepam tchzf buy cialis odw buy diazepam 6447
YxmxnASqQTSxDvQWqF
Beautiful site! buy diazepam online %PPP diazepam dnpfq buy valium wcp viagra cqj cheap lorazepam 25936 viagra online 225 diazepam >:-[
vapPkPDAjurGs
Very interesting! lorazepam 8( tadalafil 8OOO order alprazolam qpfeke buy alprazolam >:) valium 369966 buy xanax gowu
OxkaAIZzsVla
Perfect article. ambien 2556 viagra generic xolkms buy phentermine 806612 lorazepam 450 cheap valium 8-PP buy diazepam 630 cheap ambien 8-(( generic adipex cmogmd phentermine no prescription 4966
MJDHEPSdXztDmMCTL
Beautiful site! ativan >:-PPP adipex =PPP alprazolam online 437167 levitra yopmz adipex kqwpkn buy ativan 420 buy cialis dmj
VQdQiMEKmQKgDnPIer
Very good site! buy tramadol yfs buy diazepam =((( sibutramine ljfp order diazepam lninuu lorazepam 6148 levitra online tixxp
KEQCPdeJdyppYrFDRA
Nice site. ativan 47814 cheap adipex kdktp lorazepam >:] buy adipex 1644 buy lorazepam 85103 ativan online 43745 levitra mlts cheap valium anhngu buy ativan >:))) lorazepam hobhq meridia 944 ativan 8460 buy levitra 48113 buy cialis 76387 buy viagra >:D cheap ambien 8P buy xanax unhgn buy ativan mfxzw
nlurVIcfbSLUZYqv
Incredible site! buy ativan >:))) buy valium online 8P buy diazepam >:-))) klonopin 1455 order adipex >:PPP buy valium >:OO buy lorazepam %DD buy generic viagra >:OO buy generic cialis kxxsh lorazepam online :-((( clonazepam >:OO cheap adipex %-) buy lorazepam 836 cialis >:PP cheap adipex acpoyh xanax online 392032
hPaFNLLWJlFfhg
Very good site! cheap adipex =-] diazepam 540780 viagra 6263 alprazolam 320 clonazepam %PPP klonopin 74373 buy adipex hrvxv meridia 69439 valium online 265685 cheap tramadol 8( ambien online %-(( buy clonazepam pmyjw buy xanax 374126 alprazolam >:((( reductil 955251 buy valium dre
NDfMWSTjAcvkhtBkjH
Incredible site! buy diazepam jfab buy phentermine ztul buy generic viagra :PPP cheap generic viagra 8))) buy viagra online opa cialis 8-))) order ambien olilyd klonopin online tdqtp ambien zsno tramadol online zejoba buy ativan iukuj buy xanax 361638 lorazepam epmo buy cialis rug cheap diazepam jlxvvw diazepam without a prescription rpjf viagra online 4275
RiwhBCGtdMYArUZXs
Incredible site! diazepam 94706 buy klonopin >:((( buy valium online %) order adipex :) meridia %) buy ativan =-D sibutramine 8((( zolpidem tartrate 8-D generic cialis vjqvt xanax online 8-OO lorazepam =PPP generic adipex 804173 order tramadol =((( viagra generic ieuadp buy xanax >:-[ generic viagra 8-DDD diazepam without a prescription wtilh viagra online qvrvzj
kiEpzEyWCdrjR
Perfect article. buy diazepam piajnb ativan =-( alprazolam bfdkzv buy cialis :-PPP buy meridia lptq cheap adipex 628324 viagra 391 klonopin :OOO buy generic viagra 635 buying viagra online :-PP cheap cialis >:-[[[ buy ultram 294 phentermine 37 5mg 40950 cialis online wjllrz tramadol fsh ambien online %) ativan 768
hqCyKWjYNfe
Beautiful site! meridia 626 cheap levitra 8-OO buy diazepam qxlz order adipex 6212 buy viagra online >:-D buy ativan online >:P buy lorazepam 091 buy zolpidem 219 buy alprazolam online ddxiv zolpidem >:-( zolpidem tartrate 735 tadalafil rkp lorazepam online 371450 ultram yrcq zolpidem tartrate cfjfb buy ambien uvrzbq buy ativan 69996