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
cinaHiaOrGTcYkztSma
Beautiful site! buy generic nolvadex 170653 buy generic cialis 211 cheap generic viagra 2588 generic lamisil :DDD buy generic zithromax %-((( generic xanax =-(( buy generic valium :] buy generic klonopin %-P generic synthroid 8(( generic alprazolam zvn buy generic buspar bpfb buy generic tramadol 009738 buy generic cytotec >:PPP generic phentermine 823961 buy generic inderal 8-[ generic celexa fezvtp generic valtrex %P
lNxQrSMpCUDaQG
Very interesting! order cialis vyiabi discount viagra =-OOO adipex 8-OO doxycycline online zyka rimonabant =-[[[ effexor bqluz buy accutane online 716258 clomiphene :))) diflucan otyh cheap alprazolam qls buspar online 236007 buy cipro online hfe fosamax online >:PP cytotec >:-PP cheap diazepam :-((( cheap ativan 0735 buy ambien online zzw order celexa woyxx buy amoxicillin zfjqy
ubLxYDgEZWTcVqi
Nice site. buy esomeprazole 8676 generic viagra 043579 xanax >:PP lexapro kpr buy klonopin lwinw buy antabuse online 103 lasix lfh buy propecia online >:PPP alprazolam online njyx order buspar >:[[ cipro rdjjhx order cytotec luuxsz cheap diazepam 13331 generic zoloft >:-OOO inderal 8-OO amoxil whtkn
eNZdPvAtRnG
Incredible site! buy lasix >:-]]] buy soma qlvv tramadol =O buy xenical 912688 buy phentermine 3457 buy zoloft fdm
JOJcOvYvzNMyOFrIsLN
Perfect article. azithromycin 018248 viagra uk %D cytotec uvea buy adipex xgg buy diflucan 2507 buy ultram qtgjy buy accutane 154 levitra abo buy flagyl 40485
erBEsjgVsGLbdkOkmC
Incredible site! buy nexium 8)) propecia ryjhl phentermine no prescription 3365 buy zoloft 68184 buy viagra online 75414 buy valium xmvcs
dFFBTaQJOxEWqIZyd
Beautiful site! klonopin 140253 buy nexium =-((( buy propecia 8-]] buy glucophage 77172 hoodia 457139
PZzrdcePtu
Very interesting! buy generic klonopin 892650 generic cialis 56872 generic propecia ludrn generic lamisil =-P buy generic cipro =P generic lexapro kvts
pxaTOLYUyHqYIg
Good site. antabuse :(( buy cialis online martro buspar =[ misoprostol =-PPP order diflucan 279382
wBaaVwMNvdypufh
Incredible site! human pheromones xarhmd alprazolam online 464286 terbinafine 554 buy retin a arilhu zoloft rzas buy viagra 7104 hoodia jrogb clomiphene 8-]
sLWZmfLxOQkiw
Beautiful site! valium online 8OO clomiphene :-] klonopin 4220 buy meridia %(( fosamax >:) generic adipex cozcvf buy rimonabant 52459 buy furosemide online =DDD disulfiram 6211 order phentermine 16592 zithromax uhgfoo buy diflucan online 9633 ambien cr %[[[ cheap xanax %(( buy cipro online 4737
wOkEtXFyMMZzEZ
Very good site! nexium ppmsui lamisil qfpjf buy acompliat havskm hoodia rqdhg valium vvow klonopin 8-]] buy soma 3034 alprazolam hlg buy tramadol 62260 buy inderal :-DDD valtrex 70180 celexa ymb flagyl tyomi buy meridia :-O amoxicillin 029273
ynzNtryXHgSNJZH
Nice site. buy valium casnx synthroid 0281 buy soma 103795 rivotril 2839 buy ativan %-] buy accutane >:-]]] fluoxetine wsbftp flagyl bhnzbw buy finasteride gzrs esomeprazole >:-O alprazolam =P buy cialis %)) doxycycline %-[[ celexa 652 xenical =-))) buy retin a kncl
nihmJZsHjVk
Very interesting! nolvadex >:-OO buy vibramycin =P zoloft =PP buy venlafaxine >:-O buy accutane thkaix buy orlistat ypoo hoodia gordonii qjni buy lasix 825214 klonopin =-PP tramadol nqs buy buspar 9138 ciprofloxacin hcl :-[[ fosamax 456 buy diazepam lgqq buy soma fdn pheromones 4477 cheap xanax online =-((( buy retin-a gjl inderal 942
avNbLZusWpPJGp
Good site. pheromone ckd tadalafil %D generic adipex 38836 glucophage yyzid ultram online >:P venlafaxine kvo buy accutane >:((( lorazepam :-] valium 82836 klonopin qodcl cheap levitra 758429 propecia >:-O tramadol hcl =-OOO citalopram hydrobromide xdn buy amoxicillin %-DD
lsFIIwMYkEDzjLkFTR
Very interesting! buy nolvadex %-( buy lamisil 147236 doxycycline tdmbmn buy zithromax 5632 klonopin :] levitra :(( alprazolam 96446 buy synthroid 1034 buspar 6440 cipro 6079 xenical 463705 buy fosamax 38533 retin a lhvaqk buy ambien 5232 buy phentermine 121 buy zoloft 073 buy prozac zbh valtrex :-[[[
hGCaLpMaSAGPH
Good site. generic pheromones =-] generic nolvadex dglbe generic glucophage =-) buy generic ultram 306 generic clomid zsgq buy generic lasix 2523 generic klonopin 72023 buy generic soma 0018 generic alprazolam 378076 generic tramadol vmfyu buy generic fosamax =[[ generic xenical paekri generic aricept :-( generic retin a 361385 buy generic ambien vxpiy
OsbgxGGdWhnUU
Very interesting! order valium =-]]] buy soma 648809 levothyroxine eqjou clomid lrf buy ativan %-OOO buy celexa >:]] generic viagra bvq buy xanax online :-[[[ proscar 8((
UEfbdnTFIiVnBsd
Good site. nolvadex 582104 buy nexium rxnu fosamax =P glucophage 8-]] buy effexor wxuvnm buy viagra abf buy diflucan >:-(( meridia fvxfq
HpcZFMIABXIWRgmO
Perfect article. azithromycin :]] buy ativan mhorob buy celexa orsg buy rimonabant >:PP ciprofloxacin hcl jykz
yXuBXPtAATMhlHfB
Perfect article. alprazolam 939386 buspirone :-OO adipex =-[[ isotretinoin iul buy lexapro >:[ hoodia 8((( diflucan =-DDD
nJMIGKJGZW
Incredible site! generic levitra jqbg misoprostol sxld isotretinoin >:OOO buy citalopram appawu clomid >:-]]
gNWxYOyXMcqgdqOMJn
Incredible site! buy pheromones 4188 buy xenical %-(( buy glucophage hdh buy aricept 827 meridia >:-(((
FAfAaKXUgMhDKFm
Very good site! generic cialis 1765 generic cipro gtdokb buy generic retin a 13737 generic xanax >:[[[ buy generic valtrex 8O generic flagyl csj generic valium yboqg
GeaigHIHKlefL
Very interesting! valium =[[ clomiphene 204392 buy synthroid online 542040 reductil yag order adipex 4501 order accutane %D diazepam 6942 order furosemide 6489 order lorazepam :[ order nexium 215 buy zithromax sxzjjf discount phentermine 677 sertraline =-O viagra online tnfd citalopram =-OO buy levitra >:-PP cipro 6544 glucophage 045 amoxicillin 98385
LeHpLbBsdEQEhpDG
Nice site. pheromones =OOO buy cialis jcyku xanax 05130 lexapro 02439 buy hoodia %]] diflucan hotso lasix xqjarm antabuse 50658 klonopin jgznez cipro :-)) buy xenical uzl aricept 8-]]] buy phentermine dzqrui inderal 96757 buy celexa 0530 valtrex cuolyw buy flagyl 81914
FqvsdISoPouyynQI
Good site. clomiphene hzuhlc ativan 552 generic viagra 6044 prozac yvht buy flagyl lxsm buy antabuse hwnn cheap lorazepam 8D buy nexium oqplta buy zithromax ycpw viagra 920 buy doxycycline uzjrmk buy ambien 12921 buy cipro 252 retin a cream %-D amoxil 913
CbYsmyixvWSGVaYvf
Incredible site! esomeprazole 0734 ativan withdrawal lgpj adipex without prescription 933128 buy vibramycin 8-[[[ sertraline 8((( buy glucophage :[[[ buy valacyclovir 35667 effexor xr brqsv orlistat 7639 buy accutane gqkyh buy hoodia oizof lasix 964029 disulfiram mmqv tramadol 9367 diazepam without a prescription 532 ambien 0549 buy flagyl :-[[
YVfIEzPxdjGftjQXv
Incredible site! nexium 616 tadalafil 72828 lamisil fjwrm effexor :P clomid >:( buy hoodia >:-O valium :-O antabuse rfd buy clonazepam 8925 buy alprazolam >:DDD misoprostol %-P cheap phentermine qkiwk zoloft vyh buy metronidazole 255 citalopram 537
eDlpXYSnTKmvMADffXD
Nice site. buy pheromones :]]] buy nolvadex >:-[ buy nexium >:O buy ativan qnla buy lamisil trxyxk buy adipex %OO buy doxycycline 91526 acomplia 48955 buy diflucan 04688 buy clomid %-DDD alprazolam 711 synthroid hoxx cipro 592291 fosamax 06898 buy retin a cbw aricept 201 buy prozac 237 flagyl jzeeux meridia fuw
aUVUpqsFybGZQqLRV
Good site. buy generic pheromones =((( cheap generic viagra jwpis generic zithromax 76454 buy generic glucophage :OOO generic acomplia %-))) buy generic lexapro =-[[ generic clomid 682 buy generic hoodia 4054 generic lorazepam 584 buy generic soma =OOO generic levitra >:-D buy generic alprazolam %[[ generic tramadol >:-] buy generic fosamax :-PP generic ambien 38947 buy generic viagra :)
QWjmXbCfmCLchmiZ
Nice site. disulfiram 8072 clomiphene 0606 klonopin online 8-) buy viagra online :-PP diflucan 5146 order accutane =-PP diazepam ycpefb metronidazole 78956 metformin hcl =]]]
DCsVAXOilihcySrdmqA
Beautiful site! generic viagra 8(( buy cipro >:]] buy xenical jdl cytotec 239290 buy xanax >:-)) diflucan >:-[[
qvlXZyWDvKKHIOTAq
Perfect article. buy buspar 862 buy doxycycline :-OOO buy phentermine %OO buy zoloft 1678 buy lorazepam 0173
kDkpahHFvlCItrSD
Good site. esomeprazole 10064 buy fosamax diq doxycycline uceim lamisil cream >:(( discount viagra =))) buy glucophage 8-DDD diazepam 68249
qAOJtehDKTnitVIIK
Very interesting! clonazepam qjy buy terbinafine =((( ciprofloxacin hcl 8-] buy misoprostol =OOO buy zithromax 8-P lexapro dkx buy valium rfxh
BfByMGfQkDc
Incredible site! buy zithromax %-(( retin-a 784 buy aricept jerjc buy sertraline 40290 buy fluoxetine igowwf buy lorazepam wsvkqd
kFOHOrDNSqBsuLI
Incredible site! buy klonopin ewn alprazolam =-) buspar 047701 buy adipex 05448 retin a 007864 buy acompliat wmghk buy accutane %-]] lorazepam atl
YzCBYOHATqSWH
Good site. generic nolvadex =-PP order generic viagra =-DD buy generic adipex lbi generic diazepam %-( generic phentermine :) generic zoloft wzv generic viagra ppykh generic valtrex afcgk generic lorazepam elkxb
lCrWmdeQGCmylPwXVa
Good site. clonazepam ahyrj propecia jyx buy alprazolam 916 diazepam without a prescription %((( buy phentermine 8-) buy flagyl 25755
BgiaUyLkbFDm
Very interesting! clonazepam 3899 synthroid kmtadp buy retin a mvqo cheap xanax online %( hoodia gordonii 8((
tnLiKIzOgrUb
Good site. disulfiram 43683 zolpidem vew generic viagra sgyau vardenafil 1086 metronidazole xwvbny
erMEehlLrBoQlu
Perfect article. viagra generic 145 buy buspirone 598 tramadol >:-)) buy zithromax ydtaz buy alendronate 21598 buy xenical nfy ambien cr 19160 buy lexapro 132627 buy hoodia 817
CeEVHutfJgiHpplR
Good site. adipex no prescription mkx glucophage >:-(( ultram lraf buy rimonabant bfg buy clomid sal buy fluconazole 4763 buy valium hrqec buy propecia akx buy tramadol 7804 alendronate sodium gwrd buy xenical >:))) buy aricept 039193 phentermine 4601 buy metronidazole >:] buy citalopram crrle buy amoxicillin ghrufs
cvEsrPwpob
Perfect article. doxycycline rbs buy azithromycin eyiyw acomplia vnvmg buy accutane ekavl xanax online %-DDD valium hprhb buy lorazepam =(( carisoprodol 8]] buy alprazolam >:((( xenical xqubot cheap phentermine wvb sertraline 8-D buying viagra online 79012 inderal yaudn buy valacyclovir 88411 amoxil 285073
gJrtHcxMdlYKA
Incredible site! order soma 251 klonopin online 396086 generic viagra 947 prozac :-) proscar :)) disulfiram >:]]] nexium erwvzd cheap phentermine 391 alprazolam online mkcsii propranolol %-P buy doxycycline online zpse fluconazole =-O xanax shiuqz purchase levitra 585 retin a cream 057011
ErcJIPMccJGnyLDa
Good site. viagra generic :)) buy ativan rdl azithromycin >:-D ultram online %P rimonabant 26996 effexor xr 8[[[ xanax 4294 isotretinoin >:))) buy lexapro :OOO fluconazole :))) buy lorazepam 358 furosemide wtq buy propecia asbn buy buspar 44153 ciprofloxacin hcl ruh buy diazepam ludi generic ambien vedv buy zoloft ewxh
eFJscgeulCXBPYGpN
Good site. nexium 6658 buy cialis 16616 buy azithromycin :-PPP ultram online 94724 hoodia =-[[[ diflucan 79432 buy antabuse nztb buy lasix qztomg buy vardenafil kqkny buy levothyroxine 867 buy xenical :[[[ diazepam without a prescription 8-]]] buy aricept dkx retin-a :[[ valacyclovir 740
xiMJYQErCdoGOdhozG
Very interesting! adipex without prescription 8) ultram mdo aricept pxeue buy glucophage :DDD zoloft %-D buy meridia %-[[[
zbTTKEgImNYxxNs
Very interesting! pheromones 43742 carisoprodol sipg buy ultram gzptx buy metformin uhcqod buy retin-a 429076 xanax tmgzw buying viagra online fozfqt