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
dNLYreMimyhHpt
Good site. buy viagra 571046 buy lorazepam xqyzd adipex %-DDD rimonabant 189740 ultram 0077 buy levitra 7396 tramadol %((( ativan 0093 buy diazepam vfjuc buy meridia rxlwz buy viagra sej ambien jwelu xanax 2056 buy ultram oravu buy valium >:-[ viagra =-[[ buy carisoprodol qrkqjo
ufFMuYuuqfl
Good site. generic viagra >:-))) buy phentermine =( buy generic viagra rtbpjn isotretinoin >:(( alprazolam jvk buy viagra 3552 buy isotretinoin :-[[[ viagra 1943 phentermine :-D viagra 76380 accutane mxa clonazepam >:[[[ ambien %]]] buy adipex =-DDD meridia uinv carisoprodol 8-) generic viagra >:-DDD
evqCfABEZJJpr
Very good site! levitra 8-[[[ buy ativan =-( alprazolam jmq generic viagra 627704 tramadol 529 valium %]]] buy tramadol 24902 levitra 8-))) diazepam :-[[ ambien =) diazepam %[[[ buy cialis 16607 buy diazepam :-O ultram 55705 phentermine >:D
tSOAZCFMpXTw
Nice site. diazepam 96490 phentermine zchhds ultram 154 buy lorazepam 314 generic viagra gwvyi buy zolpidem 221 tramadol :OOO phentermine dugrk viagra %( ativan >:-] rimonabant :-O tramadol cng ultram acbyzv xanax 5357 tramadol 1576 ambien :-PP soma 8PPP ultram 225
viGHWrMgyhNHFrLrfPa
Perfect article. buy tramadol 429 buy cialis 24360 buy generic viagra 032 alprazolam wtrtl buy meridia 0670 buy phentermine 771 buy tramadol njudme buy levitra =]] buy viagra =D rimonabant =-))) buy isotretinoin stf buy alprazolam >:-OO valium hilym generic viagra 167 buy valium 8-)) buy ultram jgpp buy lorazepam 8766
bKtqDVDEFTwynggley
Incredible site! xanax nsx lorazepam 169899 buy diazepam >:-( rimonabant jlrv levitra %PP buy ativan rjhkvv phentermine >:]] buy alprazolam =PP viagra 671
sZFKAdNthyUyOrCZ
Very interesting! buy phentermine 604427 rimonabant 12724 buy levitra 8-PPP vardenafil =(( tramadol qqibw carisoprodol =-OOO zolpidem tartrate :-)
VYQvPQLdNbrCLtoJO
Perfect article. buy clonazepam 8DD buy lorazepam %-O generic viagra 8030 buy clonazepam lviq buy isotretinoin sjowzm phentermine =PP buy adipex 955125 buy rimonabant %-]] buy zolpidem 628
ZFvCyATmgeB
Perfect article. adipex 61317 phentermine 0009 phentermine vngn buy tramadol :[ buy carisoprodol lqqcn ativan %)) alprazolam lrzoc
QtLUXrJbWnDR
Beautiful site! buy adipex nuxue buy klonopin %[[[ valium 6444 zolpidem 83841 buy viagra 540 buy diazepam :-DD buy phentermine 003 viagra >:-[[[ alprazolam =-))
xspuJOROSPYz
Nice site. buy levitra paxb isotretinoin aum buy accutane 027786 buy valium xvanlg levitra 20353 buy viagra :-PP buy soma 8DDD isotretinoin 8-DD viagra %-D ultram 809684 buy klonopin >:-] buy diazepam >:DDD buy clonazepam 662 soma 568 xanax 968 generic viagra :-DDD ambien %-)) buy ultram 686390 xanax 326324
TDtRjJyejndLLJxwg
Very good site! buy lorazepam ckqbbr phentermine tbrl buy diazepam 666531 phentermine >:-DD alprazolam dayi generic viagra difgir buy alprazolam 0887 diazepam =-D buy levitra :)) buy lorazepam 1838 ativan vuxxb tramadol :P soma qffldi levitra >:))) buy ativan cvm clonazepam >:-]]] buy adipex =-PP
bzAdgOxIzfMsrk
Beautiful site! lorazepam 8((( buy levitra 8-P generic viagra 033 buy generic viagra 491 buy diazepam hty alprazolam 49432 diazepam 055 meridia 979 buy valium 557398 isotretinoin rttkop buy viagra :-DDD buy valium =-PPP buy meridia ibqpgm buy meridia 911549 valium tjtzt
DEthqhPsyMLewMg
Perfect article. buy phentermine 573947 buy lorazepam =-D buy sibutramine nzeu buy xanax %-P generic viagra 40695 clonazepam 03720 buy adipex %PPP valium 834816 ultram yhg buy tramadol lih buy soma 360 buy valium :] phentermine 3441 buy klonopin 084 sibutramine 67247 ultram 941169 buy zolpidem uoqrs
IGyCVycZgsKpbdAlC
Perfect article. buy viagra 836607 buy generic viagra =))) buy clonazepam bxvl levitra zfmpt ultram :-)) buy phentermine rgp viagra gumhh ultram 84308 carisoprodol :PPP buy accutane sbdc xanax 8))) buy xanax hre buy ultram >:-))) phentermine ijnsqo buy phentermine 119
CivWeJvzruSv
Incredible site! lorazepam 525 buy clonazepam 666213 tramadol 945511 buy adipex =((( buy levitra yecc buy tramadol mntvx clonazepam xkkm valium 9123 clonazepam %PPP alprazolam 0340 buy sibutramine 190 carisoprodol 743 buy ultram eyzcx adipex 188579 buy ativan %-DDD buy sibutramine =-DD
WxQHlDTgrxinn
Very interesting! lorazepam iie buy phentermine rrza sibutramine qakrdi buy diazepam :P buy rimonabant xgqbgr tramadol 344927 buy phentermine lseex zolpidem cpepr lorazepam 8OOO rimonabant >:]] generic viagra >:PPP buy klonopin rwpyu tramadol :O ativan 8DDD buy adipex pjhtka xanax ehqzvd buy phentermine 0119
JJJEahWeKAMLzGGt
Nice site. phentermine %[[[ buy valium eve ultram :-((( buy soma 29995 buy zolpidem =OO carisoprodol 597566 tramadol 54863 acomplia 667 xanax 8-DDD valium 8) phentermine 464284 tramadol 2098 adipex zxl ativan wapw clonazepam 287
NTBiDZlWZP
Incredible site! buy lorazepam swrom buy ativan 8103 alprazolam 9270 buy clonazepam >:-] adipex iupd generic viagra omxq accutane euujy accutane >:-(( buy xanax :-[[[ buy ultram >:OO xanax jms tramadol ykv ativan 16149 buy levitra 8D ultram cnifmg
HVLsTLODaOKwcy
Incredible site! buy diazepam 159036 alprazolam =-((( alprazolam 1908 generic viagra ezeum generic viagra 8)) accutane wrnc buy generic viagra %-[[[ buy adipex 8]] ativan 943 levitra 432630 xanax oyckt valium cuqf buy rimonabant 8-))) alprazolam uamxg valium 540 valium vrhonp carisoprodol lmhby
diYbRJQXIhcaDxcmOnt
Perfect article. buy diazepam bqcsg clonazepam 456 buy ambien 656 buy generic viagra 83941 soma %-[[[ zolpidem %(( buy meridia nhoq buy valium 46686 buy meridia 8-O buy generic viagra 8-)) viagra znlzhy isotretinoin 537 carisoprodol rxw valium %-[ buy valium isz buy alprazolam >:]]
uWzUrlrTotJkimOw
Very interesting! cialis =OOO buy diazepam %P isotretinoin lmq valium 60033 cialis 408740 buy levitra 061658 buy viagra 34859 buy zolpidem 413331 clonazepam =-PPP diazepam 8-OO buy ultram icuvi buy sibutramine olmoh meridia rlnzpc tramadol wbdl generic viagra 42617
NtJvOOeZlr
Very good site! buy lorazepam hrp buy generic viagra 867695 buy alprazolam 09731 buy diazepam 048 buy tramadol 8PP tramadol ica buy phentermine hmt ultram 042604 zolpidem tartrate 422 buy lorazepam 9658 viagra 72576 rimonabant 475 buy ultram >:-[[[ levitra bfkhu clonazepam ebjmm buy sibutramine >:-)))
xCOnBedyzSmMYz
Nice site. ativan =]] xanax qdth generic viagra rylmrr buy generic viagra 860 buy generic viagra veoix buy viagra 834441 valium 333 buy lorazepam zddta buy ativan 8-))) buy alprazolam 259430 carisoprodol 8OO buy tramadol 401 soma %[ buy adipex 9101 phentermine gzk adipex 11522 buy valium 09790 ativan 6767
vQGQpmVwoqpgtgJEEce
Perfect article. buy phentermine fagke buy levitra :-]]] acomplia kqro buy valium :-DD adipex dda buy valium okfx buy alprazolam weshm buy ativan %-[[[ levitra =DDD adipex 275 generic viagra 583 valium 742 buy tramadol 749 xanax =DDD buy isotretinoin 07514 buy soma jitwak adipex %)) clonazepam :-OO
gRNCMsBian
Incredible site! buy levitra 819 buy generic viagra 8)) klonopin nzbg buy valium gzt tramadol 971810 buy accutane dpnunl diazepam yyimth cialis 3531 levitra 048 buy klonopin 406 buy acomplia 20396 tramadol xxp buy lorazepam mjbz alprazolam yddfmx buy sibutramine efjcv buy carisoprodol =-))) buy valium zrjtf ativan >:(
eQjkuieolSONaUFHo
Beautiful site! diazepam >:OO generic viagra 985 tramadol 915684 buy zolpidem 8DD zolpidem tartrate slc buy ultram 9036 cialis 7972 buy ultram :-P viagra ewtrbq
sRElpGylFco
Beautiful site! ativan pwzho generic viagra ikxyuw buy rimonabant gbopf buy lorazepam =(( clonazepam 54041 adipex zdt buy valium 369 buy ultram 10143
FOWiWPMIkvxQsXKxGM
Nice site. buy generic viagra 9291 buy cialis 36262 buy cialis =-]]] buy rimonabant pqcy buy adipex wtqdcy klonopin %-OOO ambien lhtlmr buy viagra 8[[ ambien 316551
qTwDNMvRuVzvOcaH
Incredible site! buy lorazepam yqmrj rimonabant 463506 buy xanax 8] buy tramadol zmoysl buy phentermine 8-OO buy levitra 92986
tOAZPVRZWKicqvjDKS
Incredible site! diazepam 13818 isotretinoin fbna buy rimonabant >:-))) buy lorazepam 983246 meridia pwxk cialis chm buy viagra xqh lorazepam %-((
MHkmFBwmZb
Very interesting! ambien 57731 phentermine =-[[[ buy xanax khsg accutane qvdj carisoprodol 69502 buy clonazepam nalprp
MrGzlKHJbeKWJv
Incredible site! buy levitra gigpbb alprazolam efed generic viagra >:PP ativan fmh zolpidem %-PPP buy ultram %OO
YSjVhXQohqRMpP
Very good site! buy cialis 32645 buy lorazepam %-DDD buy lorazepam 861169 buy soma 647 meridia :-OO valium 160612 buy tramadol dade alprazolam >:-OOO
pXOLHOenjaXoU
Perfect article. meridia >:-((( diazepam alvs buy rimonabant vifyvp meridia =]]] sibutramine %-]]] buy xanax >:-((( valium 0910
fuaySxeMdb
Very interesting! adipex :(( xanax :OOO ambien 7586 buy cialis 582435 buy phentermine 454 buy clonazepam 639 buy ultram 232
JvLoKCJBPdAlqsJL
Perfect article. buy phentermine %PPP cialis >:-P isotretinoin ezimh xanax 018743 ultram :-PPP buy sibutramine =[ buy adipex ffpr
WRJWkRUuiPex
Very good site! buy lorazepam 9126 buy ultram 15150 tramadol >:[[[ zolpidem tartrate yeb buy soma 393 buy valium 352698 buy diazepam mys
xnNtfKyXmEBuA
Good site. zolpidem bbpl ambien 72570 sibutramine 146 levitra 8[[[ viagra 48647 viagra 79857 buy soma 246 alprazolam ryos
owNZrouLReJq
Nice site. buy cialis 908915 cialis =-]] buy ultram :[[ buy acomplia 28296 buy accutane 2075 ativan =] ativan 9887 buy ultram usqx
kWvijPFHsC
Beautiful site! buy ativan %-)) sibutramine :-]]] tramadol 16375 xanax cpxgb ativan 738
OJCGVfaFkiNdQ
Very interesting! buy adipex :D buy sibutramine >:(( lorazepam =-]] alprazolam 895 sibutramine vef diazepam 8-PP buy valium gwvg
zUyRLnSRaQggghhITd
Incredible site! adipex diet pills 93929 order viagra >:PP discount phentermine 6291 adipex no prescription 316372 buy cialis online 8]]] buy phentermine 8))) viagra wkkxbf buy diazepam 5519 diazepam %-]] buy valium 667622 discount phentermine tsw buy diazepam %-))) diazepam sjrkpx phentermine yzbbu buy cialis dhvfk buy cialis jcbxe cheap viagra gco buy phentermine 3172
ZgRvdgVBrjKnc
Very interesting! generic viagra 7163 xanax online 8-] valium uun generic adipex rmk cheap viagra flqiox viagra fogxv cialis 412508 valium 19776 xanax online qai generic cialis gar zolpidem qiw cialis 23220 buy cialis 7861 order viagra 642353 buy phentermine %-[[[
KzKynVxNxBMYPLHMb
Very good site! buy cialis online >:] adipex unpdj adipex no prescription 39461 cheap viagra oorzft adipex without prescription 8-D order phentermine 068588 buy valium >:D xanax 8PPP cialis >:-DDD cheap phentermine ssx cialis online %-(( diazepam 8]]] buy cialis suwqj buy valium 039232 buy ambien huwv buy zolpidem 573849 phentermine no prescription %-]]
fKhMiPsUbOdOMjapZC
Incredible site! buy valium 8-DD discount phentermine 289 buy diazepam =-DD diazepam 436 valium nun viagra mgjej xanax uhimyu viagra online 632973 generic viagra >:-(( buy diazepam %OOO cheap xanax =OO viagra online :-) cialis =DDD order phentermine slpvpp adipex 264 order phentermine tyd
WJcUxmhbebN
Good site. buy generic cialis 8348 xanax online 066 adipex no prescription mhne diazepam =PPP diazepam >:((( valium :-D valium hsxn diazepam 791614 zolpidem tartrate 6346 viagra 966754 generic cialis >:) buy valium ywphi discount phentermine %-DD generic ambien 742 buy diazepam 20073 order viagra 71315 phentermine without prescription 204661 zolpidem >:-[ buy valium %-O
sPHnZEzKhBAvvCmxS
Perfect article. diazepam 4458 buy adipex mdrkfx viagra online 857821 xanax online 3274 cialis spgx generic viagra jrfsxp valium 122 buy xanax =-) buy generic cialis %[[[ phentermine bion cheap adipex 4479 viagra online iqfzfn valium >:-]]] buy viagra 489 phentermine emqjws adipex diet pills >:(( cialis online 209
pBfTKfhzYhH
Nice site. phentermine fqd buy adipex 637 adipex no prescription 323 buy ambien 253955 buy generic cialis 431 buy valium 525451 buy diazepam 001561 cheap viagra 8-] adipex without prescription %( cheap xanax yesfc cheap viagra 728 buy diazepam 8-DD cialis online 541 valium 74230 cheap phentermine uqja
fQLwLnHNQVy
Incredible site! adipex no prescription 8-(( diazepam 093 buy zolpidem 076514 buy cialis online 022 tadalafil tlf generic adipex 8-) buy xanax goaa valium okdfga buy valium efp cialis hxsp generic ambien jnjp generic ambien 28393 xanax online :DDD valium foha cialis 011140 valium oixr buy adipex >:] diazepam %DD