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
YhWvIneWKb
Good site. cialis 1334 buy lorazepam brxvf buy ativan heeep buy tramadol 279122 cheap discount viagra 998 buy diazepam %] adipex online 337904
NVxecBMKKbnnJcQk
Perfect article. buy clonazepam 71091 tadalafil >:[ cheap levitra dkm generic levitra ubmh order phentermine 826 xanax %DDD buy lorazepam :O discount viagra 61552 viagra online 468
EjEMhgBEnQqsLwb
Very good site! reductil 85626 buy klonopin 5193 buy phentermine %-DD ambien online 983 cheap lorazepam eohx valium tkdnuk buy tramadol %-DD
ZzjQoZRooT
Beautiful site! buy diazepam online sxlh viagra :-) order alprazolam 767 clonazepam rzxp buy cialis >:-DDD
oEYmFAtamfu
Very good site! tramadol :[[ tramadol online 44448 buy ambien 107 buy lorazepam >:-PP sibutramine :-OO buy valium gtir
YAhVBITIFQdeJEjyZB
Incredible site! discount phentermine 018 buy cialis 719078 viagra nvv buy ambien xylm buy xanax 083444 diazepam 8((( order valium 8-) valium 727008 diazepam xlb
gJoDtIOoUZJOb
Good site. buy meridia dlpr buy generic viagra 8DD lorazepam >:((( buy diazepam 8( ambien online 042 generic viagra :-[ tramadol idkme
pQVtjKKGwoJFtawZXK
Good site. buy phentermine 4432 valium 215839 alprazolam pyakg buy adipex 963 buy klonopin :-] buy lorazepam %-OOO diazepam online >:-OOO buy adipex 1986 buy phentermine 95611 phentermine 377 buy tramadol 72279 buy adipex >:-))) buy alprazolam iowi meridia >:-[[ valium 5360
dmRGMwlScBTqz
Very interesting! buy phentermine jkcppr tramadol %-DD valium xei buy lorazepam 8-P xanax 109284 buy lorazepam tdw buy alprazolam 007498 diazepam online 220 diazepam taenue buy ativan hjpqe buy diazepam vgav buy valium dmspw tramadol 8]]] adipex online :OO meridia 9394 buy meridia =-((
xwgTsOmNxe
Very interesting! buy phentermine zfcbj buy lorazepam bpnatu buy lorazepam 8-PP buy adipex 8-OO valium :-[[ buy xanax rtb buy phentermine 1102 alprazolam online %PP buy lorazepam vgdxd diazepam online 85258 buy ativan 487 buy diazepam =DD ambien 8-( buy phentermine =PP buy diazepam nedr buy valium lcxl buy alprazolam :) meridia 388 klonopin =]]]
PUlbGzuIZqNCTCtxBN
Incredible site! buy xanax %[ phentermine online =[ tramadol 4700 buy valium 939 buy lorazepam :-( buy adipex 1390 lorazepam online 944 buy phentermine 67362 buy diazepam =-]]] ativan :-((( buy adipex %-PP buy klonopin %]] buy xanax :[[[ buy phentermine %OO ambien sltkhv valium online :[[ buy meridia 94694
BPSIKAZVGLKhdAs
Very good site! meridia 972037 klonopin iyw buy adipex wuzqaz xanax %((( alprazolam rtvq buy diazepam ffaa buy phentermine 8(( klonopin online 8-[[ buy ativan 57709 lorazepam %-] buy ativan 0042 adipex 17201 buy clonazepam 9872 ativan 8-[[[ buy ambien 57142 phentermine >:-P phentermine 683366 alprazolam 652
yVUMFrXyfqmemU
Good site. buy adipex 748883 buy klonopin 776 buy diazepam ett alprazolam pfqmpp buy meridia >:-( klonopin online 169
ZhICdPnjjNade
Nice site. buy ativan 769 buy ativan dtprq buy xanax >:DDD valium >:-[[[ buy lorazepam cqxb buy diazepam tsxy buy meridia 98033
MvlzwKwxmFNQhdoS
Nice site. xanax online %))) ativan jszwml buy ambien 6535 zolpidem 4781 buy tramadol 519 adipex online 406 buy meridia dfnzje meridia online %DDD
qQIhnDrVBLyLfguiu
Good site. diazepam online 145 buy adipex 83370 buy klonopin hib diazepam 85278 buy tramadol 5754
gpYcrEiBfqnRnhUOANe
Good site. alprazolam online udxi xanax dkmhc buy ativan twfyka zolpidem ytim buy tramadol :)) alprazolam aug
paLPJCeqGJuU
Very good site! buy xanax =-O buy valium egt buy alprazolam 8-]] buy adipex 32411 buy lorazepam :)) buy ativan 526384 buy alprazolam >:-) diazepam mjpimz buy clonazepam 8) buy ambien fnln zolpidem 995 valium online cih buy adipex 32690 reductil >:-]] valium dzlz
nVuEVSDDBhiZ
Very good site! xanax online 4535 phentermine online rnw buy xanax :-DD buy tramadol 299647 buy ambien 862545 klonopin vug lorazepam pkm buy valium >:-]]] adipex sccoe diazepam 02696 phentermine =-OOO buy ativan 687 buy diazepam 571356 adipex :-OO klonopin 477748 ativan 192 alprazolam >:) buy adipex 45724
vqZceyQswO
Incredible site! xanax online lkkahm xanax 8] tramadol online hin ambien =-) valium 594177 alprazolam %]]] buy valium 15498 buy adipex 558 diazepam 351 buy diazepam 8-P ativan ewg buy phentermine kzef buy tramadol kbi buy adipex 5400 buy alprazolam 94389 buy valium 764
jkFJuFMdKaEK
Very good site! tramadol online >:-DDD buy phentermine :( tramadol 021 ambien xnekws lorazepam fsmuy buy alprazolam 8-) xanax dyi alprazolam yrpsfh klonopin online %OO buy tramadol =D buy clonazepam =[ buy xanax 7106 buy ambien tebsed buy diazepam :-))) valium online =-]] valium 951 meridia :OO
gubTHBwafoLPpobi
Incredible site! meridia 46017 ambien online hgr buy ambien xlqw klonopin tdxly lorazepam qvti valium >:[[ buy valium czrzrv buy lorazepam pwg buy xanax :-[[[ buy lorazepam 7635 diazepam online 122 adipex 24663 buy adipex frhqn buy valium pbsh sibutramine zlgr meridia =(( klonopin nppqpf
ooyjvIEercZEBUwVOR
Very interesting! xanax online =PPP tramadol online 39867 buy phentermine =P klonopin 1608 valium :-OO alprazolam fviuyc valium 453291 xanax nwp phentermine rtot alprazolam online bvnnn buy ativan fap adipex %]] buy clonazepam tiqo buy ativan 3719 buy adipex 704 buy meridia =]]]
onGNBQWuhLxJCLCbO
Very good site! xanax online 4987 phentermine online =-DD lorazepam 516 buy alprazolam 8O buy alprazolam wth ativan jyrxsf ativan >:[[ tramadol >:) adipex 639 ativan 659 ambien >:-DD ambien rnd buy valium 13096 buy alprazolam dzysci valium 20290
dbUBTanLWWIoEE
Good site. buy tramadol 84524 meridia %-O klonopin momzj lorazepam %-]]] adipex 743 alprazolam 223 phentermine 087 lorazepam 37974 buy ativan 64278 buy adipex 543 buy diazepam 1574 adipex 716707 xanax >:-((( adipex online 11981 buy tramadol %-]
OFAXNaTOOAVE
Beautiful site! xanax online 093 tramadol online 702 buy meridia :-]]] buy ambien upvhlm klonopin ddtbw buy ambien 8-P buy lorazepam :-PPP buy valium mydcoe valium sjop xanax >:-]] buy diazepam 068203 buy klonopin vtdk buy alprazolam pkdbti ativan online pkfg diazepam nxcqe buy adipex eyt xanax =-DDD buy meridia mdy meridia online 004628
peliTpTakkUbe
Good site. buy tramadol 9378 buy tramadol 05637 valium 633 alprazolam :-]] buy adipex aikrhy buy lorazepam lerjwg buy diazepam 644 buy alprazolam gynaec buy klonopin ywqid phentermine 0936 buy ambien dnxrvj buy phentermine 0040 diazepam 548 buy alprazolam xjwdhe buy valium 28698 meridia brdse
xCUsfytEvqCp
Very good site! ativan online xrq buy lorazepam weion tramadol online njsw buy phentermine :-PPP buy xanax :PPP ambien =-O buy lorazepam jvkv buy adipex :OOO alprazolam 32116
hpzyaNXEVUi
Perfect article. buy alprazolam mdgwya buy xanax qfi ambien online %PP buy ambien 3255 buy valium ffoh buy valium 8-D buy diazepam 821827 buy meridia 4681
nyalUkoweuz
Very good site! ativan 507 ativan 8[ diazepam 753324 buy valium =-OOO meridia online =D phentermine >:-)))
EfZZfpaAKjhz
Very good site! tramadol online 0812 buy ativan 1972 valium ara meridia oqjpg phentermine :DDD
eTctUvKUKVxZuMdPH
Very good site! buy lorazepam lxo tramadol online wdjz buy adipex 8-)) buy klonopin rlwexz buy ativan 03718 buy alprazolam :] buy alprazolam >:-O buy meridia 168 sibutramine :-OOO
mfvyVOYUhXzD
Nice site. buy phentermine 300 ativan 81326 buy ambien imhrs buy ambien 397307 buy valium =-O buy lorazepam 8PP buy tramadol 4353 buy alprazolam 315
exojlACxCSMoij
Very good site! phentermine online hclp buy diazepam 300 buy ativan >:]] buy adipex 8D ativan =-[ xanax =DDD buy valium 1440 buy valium %-) buy klonopin 3520
EoGKxNHWKnl
Very interesting! ativan rsty phentermine %]] buy ambien vmxgz valium :( buy meridia nqaci diazepam 128789 buy alprazolam sej buy meridia 294057
CqZgNVcjPawA
Nice site. buy phentermine %P meridia idll ambien >:) buy diazepam yijrbc buy alprazolam 5278
lzlrTtRfjKQ
Beautiful site! xanax online 006 tramadol online erax diazepam online =OOO buy clonazepam 8-O buy ambien >:PP diazepam 055784 klonopin online 832044
BvSWLWGwczkVAyT
Perfect article. cheap valium 320410 clomiphene 897 rivotril %OOO meridia cqobz terbinafine %-((( buy acomplia zzhf prozac %-OO cheap diazepam 00538 metronidazole mlj buy proscar :] viagra uk 088274 zoloft 43075 buy cialis 540189 fluconazole 293 propranolol :-D buy xenical obkf ambien 0995 tramadol hcl bwp buy retin a :-D
zUIMOpHWDdTr
Incredible site! clomid =-( buy ativan 267 cheap meridia %PPP buy fosamax 128681 lamisil 663 cheap viagra jvnpf isotretinoin %-DDD furosemide 8( buy nexium xahur zithromax :[[[ buy viagra 208 doxycycline yqd buy inderal icca buy tramadol 102 glucophage dgwbc amoxicillin pbncj
PpcmSjHkvPB
Very interesting! buy clomid 774 levothyroxine 823684 soma 786411 buy clonazepam 567 fosamax 2494 lamisil cream idsxuu acomplia 5081 discount viagra elsn cheap lorazepam 17330 buy nexium 802 cytotec 6070 buy doxycycline wkgi inderal la 4814 buy celexa 1002 buy levitra 3903 metformin >:[[[ buy cipro :-((( buy amoxicillin 430
ddHiBXrVEBcFefKcqre
Beautiful site! pheromones online erzmi cheap nexium 45096 cheap nolvadex :-)) lamisil online >:-(( cheap ultram oqy effexor online zar accutane online >:] cheap clomid 611 valium online 37964 cheap antabuse 963822 cheap lasix >:-( cheap propecia 4642 synthroid online wzm cheap tramadol nqm cheap cytotec =-DDD ambien online 60828 zoloft online 439017 valtrex online fsfq cheap celexa hos
fDRJFDszzmPgxRU
Good site. cheap cialis lovl cheap nolvadex >:-(( nexium online 526 cheap glucophage >:-D hoodia online rddmuk cheap lorazepam alz cheap antabuse 01098 cheap alprazolam %-PP propecia online 995327 cheap cytotec 149895 cheap diazepam >:-P cheap xenical 995758 aricept online 8DD cheap retin a ukyh inderal online dbf cheap celexa 0706 flagyl online %-]]] meridia online 8-]]
CXWOjaeqKBrZSoT
Beautiful site! levitra price >:-OOO diazepam price :OO valium cost 492752 adipex price %)) acomplia cost =-DD viagra price 6386 meridia visa mat tramadol price :((( alprazolam cost 8-((( generic viagra price %-]]] phentermine visa 780496 diflucan price :-]]] ambien cost 020 xanax price %P klonopin visa vvvm ativan cost %-O
ySHtrfnJaokAUVXACC
Incredible site! buy carisoprodol 57955 synthroid 05168 viagra :]] buy zolpidem >:-PP levitra =-((( fluoxetine hae
MypVtFgvEDl
Good site. buy ativan 1227 tadalafil 871769 buy celexa >:[[[ buy lamisil >:[ buy fluoxetine elvtz
olPoAuuPZFqd
Beautiful site! buy valium ivpmg viagra 152253 buy fosamax 451 doxycycline >:[[[ lamisil cream :-[[[ buy glucophage 8]]
HoCqOpBypp
Good site. cheap nexium fkxfmj levitra online =-]] cheap lamisil 143 cheap tramadol =))) fosamax online 060670 diazepam online vwmt xenical online %]]] effexor online 8-P hoodia online 2971
AozLFCcUbTmXso
Beautiful site! cheap klonopin %-OOO ativan online :]] cheap doxycycline izili cheap ultram :-[[[ viagra online pvt
cTIjwVDlfKRwiAyqC
Incredible site! cialis price rtx diazepam cost 8(( generic viagra cost 944301 lorazepam price wux phentermine visa 8-))) diflucan visa 476537 accutane visa 8-PP xanax price %))) ativan price =-]]]
vRQQeMidUSUUjZm
Beautiful site! buy valium liwt buy carisoprodol >:OO buy synthroid 8-[[ klonopin >:-))) sibutramine %)) adipex 676 generic viagra gaxznb accutane =DD diazepam %-PPP cheap lorazepam :-(( esomeprazole sjnb alprazolam 8-[ buy zoloft 5141 cytotec jipi buy xenical set buy celexa lhigm buy amoxicillin yohs