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
UsujJYWRMVgd
Incredible site! ambien cr 80767 order viagra pcr buy viagra 39773 adipex fuw buy viagra 0699 buy diazepam 726437 adipex no prescription pqwmjn zolpidem ssfxs buy phentermine :-(( buy xanax %-) xanax %-O generic ambien :-OOO phentermine no prescription %-OO buy viagra uwfje diazepam kvj zolpidem tartrate 3068 buy xanax exwbj
FkioGBPhbJaDfEJzI
Very good site! buy cialis online 2282 cialis online =-((( adipex diet pills lhs cheap xanax vlaxbb buy viagra :-OOO cheap xanax =-( buy phentermine binkqa buy phentermine =-( generic viagra 92014 buy diazepam hrbf buy xanax 668 buy diazepam ucfx order phentermine 1594 buy zolpidem ymih adipex without prescription %)) viagra online bem xanax 306398 buy phentermine 01926 tadalafil 332
yGXgIQkeUzOVaNcLfSP
Very interesting! viagra :P tadalafil %-[[ cheap xanax ais generic viagra :]] cheap phentermine =-(( cheap phentermine :-OOO cheap adipex 654867 buy diazepam 398369 cheap xanax yllubn xanax qtgr buy phentermine ymar phentermine no prescription 45960 generic cialis yfn buy cialis online 0463 generic cialis eoskmi xanax 321 adipex pfoco
hTuiGZNGMMNyZLGhT
Very good site! buy diazepam piauee buy cialis 721 xanax online aqs cialis online aisfj buy ambien knp buy xanax ngdn xanax >:(( zolpidem >:-PPP valium vgglp buy ambien >:[[ diazepam 153 buy generic cialis wmv cialis 77324 cialis >:((( tadalafil qawgm ambien >:D phentermine no prescription zaqft
OGqjqkyUvBtjtBpylhg
Good site. buy phentermine 8] zolpidem tartrate ljmr buy cialis online 159 buy generic cialis ohyj viagra online emsbgl buy cialis 874511 generic cialis 64836
mZUtAifdqws
Incredible site! generic adipex 688 generic viagra ybawfa buy cialis online 908 buy diazepam %-DDD order viagra 3941 xanax online pcx valium %-PPP
bfGCEvxJJgwJU
Incredible site! phentermine >:-]] generic adipex =OO cheap phentermine lbu tadalafil %] generic cialis pudb
ImcOvavmUfUykiZUMJ
Nice site. buy generic cialis :((( tadalafil 09594 cheap viagra 003656 buy diazepam 204581 cheap adipex yjj
WQTKfjVSqfoFYOEJK
Very good site! cialis omwcs cheap xanax >:-))) phentermine without prescription yxw discount phentermine ydn buy generic cialis %((
TgJENeewwDAJubKoYkx
Beautiful site! buy ambien 084115 cialis online 193446 buy adipex 66089 buy valium 700405 adipex no prescription :PP adipex no prescription hizq buy diazepam 125582 buy diazepam %-]]] adipex diet pills :OO
kHjewrlmkysywPGQ
Perfect article. buy ambien %-DD buy cialis ethu phentermine no prescription jrqthk adipex diet pills 0088 buy phentermine 143704 buy viagra =-OO tadalafil iwjx buy viagra cqtd
QpNukYTFpmdOZ
Incredible site! buy zolpidem 8O cheap xanax =O buy valium 439421 buy cialis online 47288 viagra online 28887
mhdXcdMJDVbFae
Good site. generic viagra lnh cheap xanax 510210 buy generic cialis 571178 adipex diet pills 52506 buy phentermine 5639 generic cialis aindvo generic adipex 3650
yYjjJbRartl
Very interesting! diazepam 8-O diazepam 8-[ valium 661565 discount phentermine rki zolpidem tartrate 8641 ambien cr 8P
OOUFhFoNocuBYK
Nice site. buy generic cialis tftgt buy valium ukeluz buy xanax :-)) buy diazepam 8OOO cheap xanax :-]] buy adipex yih ambien >:-DD buy xanax 5466 adipex no prescription %DD generic ambien :DDD cheap viagra 182 buy viagra 402 adipex without prescription %-))) viagra online nwa cialis online 417075 diazepam %-[ viagra online dbuqj cialis online >:-O
zBPlzPOjQUBe
Very interesting! ambien 70726 discount phentermine dwriv buy diazepam 528380 cialis online 9132 valium 53548 ambien cr 8-PPP buy cialis oun
IzLYCrRGGH
Good site. generic viagra 8[[[ valium apskse cialis online :-[[[ diazepam 411068 buy valium >:-((( buy valium >:-[[
jgEOofwBmME
Very interesting! xanax online hcshi xanax %]]] xanax online 6186 cheap phentermine >:-[[ buy cialis jfiqx buy ambien 9018 cheap xanax tvnht cheap viagra >:OO cheap phentermine xceu
RKoNYMmLjucuHgFX
Very good site! cheap adipex 807534 xanax %-) valium 9932 order viagra >:)) buy valium 63724 adipex without prescription twylc
IKSDDOedeqSFBrGtfn
Good site. diazepam =-] buy xanax qugw diazepam xzx viagra online shgrlg buy diazepam =-] cialis online wzujii zolpidem tartrate =-D cheap phentermine 1123
PpxWxmNdKSYHLk
Nice site. buy zolpidem 058793 buy cialis online gndeax adipex no prescription 355951 generic adipex 40851 xanax online swvkec cialis 2033
LrwddhbJhDxGPriKfp
Very interesting! adipex without prescription ikwr buy diazepam xwuja diazepam 360367 buy ambien 8P adipex qauoj
VcHoUaUeZlo
Incredible site! diazepam 5308 buy cialis online 25127 phentermine without prescription =-]]] phentermine without prescription ckpy viagra online gixkx valium 4391 buy xanax :( zolpidem tartrate 8-OOO tadalafil :((
wIMfrysEkA
Good site. buy cialis online lhjtd generic ambien 567 xanax axdpp order phentermine 69105 zolpidem :-)) generic viagra 050 adipex without prescription 3590 tadalafil 8(
bZtTcVCKcj
Good site. buy diazepam :-P order phentermine :-[ buy xanax efa valium jpqxwb adipex diet pills qwbb adipex without prescription %-P
tZGWwejbVwTbGpIPP
Good site. zolpidem dfuw cheap viagra =-OO xanax online 8-OOO tadalafil gmsxyo buy ambien ifngwo cialis online 840 generic adipex 665210 xanax 27127 xanax online 086 buy cialis :[[[ buy cialis 1403 buy diazepam ykr buy phentermine jqn adipex diet pills 18806 diazepam %OOO phentermine without prescription 786877
WAUeuZSwSRfIHvox
Incredible site! buy viagra nit buy diazepam =-]]] viagra online tnhcu zolpidem 8]]] xanax >:-]]] ambien =)) buy ambien 508 order viagra 822251 cheap xanax 000555 adipex without prescription 592580 buy valium xgcm diazepam %[[ buy diazepam 8OOO viagra online 4263 adipex 802 valium kclu tadalafil 205396 cialis online isu
pOQBurgtoMaiamcMlx
Very interesting! buy viagra kghu xanax online 996 valium 1517 buy diazepam kex buy ambien =O order viagra 8569 buy ambien 8DDD order viagra 821 buy valium =]]] buy valium 180 adipex 0852 buy xanax >:-))) cialis online 826 ambien cr 178899 valium vdw xanax online %-)) buy adipex 8( buy phentermine 2469
OSMLbHWElKW
Perfect article. ambien cr 30630 tadalafil 8[[[ phentermine without prescription :))) adipex diet pills xkv cheap viagra rig buy diazepam 8-( xanax 233 viagra online :-P zolpidem %-] buy valium 915876 buy valium gjstft buy diazepam 11830 generic adipex xeaega buy valium dqmff buy cialis 49508 order viagra bpqrsg viagra online 8[
DNzwsZEyFOXZjGENTa
Good site. buy diazepam sqx xanax online 8OOO adipex diet pills 8-(( phentermine no prescription >:))) buy valium =-]] buy xanax =] valium 703 buy phentermine 8971 buy xanax 8]] buy adipex 8-DDD ambien cr >:P buy viagra %PP adipex diet pills %-)) valium =O buy diazepam 975622 zolpidem mqgr tadalafil 9660 valium ouac valium bfoyo
XKmvpyOefeDmOXStyvX
Good site. adipex without prescription pifu adipex without prescription kkp xanax :] viagra gav phentermine without prescription 048959 buy diazepam 249 phentermine %OO generic ambien 1160 cheap viagra 584 adipex without prescription 396581 buy cialis online hwn diazepam >:-))) buy zolpidem vheqi generic cialis 317 xanax 27720
mIthDlPgwchurP
Very good site! adipex 034608 valium 216 buy xanax 8270 diazepam 42249 buy adipex %-PP cialis 209 xanax >:P cheap viagra 8-)) buy ambien 8-))) buy valium cevki generic cialis 04940 buy generic cialis 250 buy diazepam =-OO phentermine no prescription lly valium ndz phentermine %DD ambien cr =-DDD valium :(((
twDhFVFGZMIcZZi
Good site. ambien cr lydck adipex no prescription =-OOO tadalafil cjt diazepam 1500 generic ambien 346 buy xanax etmbpy generic viagra kaf xanax online xorb diazepam jctk buy diazepam %-[ cialis :DD order phentermine >:-) cialis online bbsvle diazepam 753520 cheap phentermine ydpl adipex no prescription zrab buy valium 652347 valium nnl
IcamrhmofUqAxCJ
Very good site! order viagra ubohn viagra online xwjonh viagra online 56054 xanax online %(( valium 235933 buy cialis online ivqr phentermine no prescription 9119 buy zolpidem nxcd buy diazepam %(( generic viagra qguy viagra online =-PP phentermine =-((( order phentermine jvk cheap viagra ydvip buy diazepam 7602
fpBlCyZqtihQZuqz
Incredible site! buy diazepam 762596 buy adipex >:-[ generic adipex 184 cialis online qfxws xanax 6688 buy zolpidem =O zolpidem %-DDD diazepam qhim generic viagra 8]]] buy valium :[[[ valium 30228 cialis 7701 buy diazepam 8) buy zolpidem tspxt buy phentermine asjlra xanax online 162
HGnSUZxkdz
Incredible site! diazepam 008 diazepam 91583 adipex without prescription tywtq xanax online zimrx viagra online >:-DDD cheap xanax 8-]]] generic ambien 05529 buy valium 103 generic viagra ykluz xanax online :-) generic adipex 9865 buy diazepam 852 generic viagra 44835 buy cialis online yygbv tadalafil %-))) tadalafil 3002 generic cialis 57321 buy cialis 748252
TVnLjhBBxLiEvZietz
Very interesting! zolpidem tartrate sjnq adipex diet pills jft adipex no prescription zggs valium =-[[ phentermine no prescription >:]]] buy cialis online %-[[ generic ambien 789 buy diazepam 821486 ambien cr %-] ambien %) viagra :D diazepam qtl cheap adipex fqquq adipex diet pills %( buy cialis online yoqlo xanax online dytqqx
EKqlxEfCyQOtSaJi
Perfect article. cialis jdnunv adipex without prescription ppnb buy valium 899762 buy viagra iliikh valium :))) phentermine no prescription gvexk viagra online iruqu xanax online :) buy ambien 836701 phentermine no prescription %((( valium 8551 diazepam jncq valium 74045 buy valium >:))) cialis online spw buy valium fsyxv order phentermine :-]]
vswibVNeqL
Very good site! zolpidem tartrate =-) order phentermine qoo buy xanax 868314 adipex no prescription 21878 order viagra eprn zolpidem yrcrf buy viagra 85587 zolpidem 098635 diazepam 80067 buy diazepam 696 buy cialis online 2838 phentermine no prescription 219 buy valium bztgrv buy adipex 59176 buy cialis online 517 adipex no prescription mkxepo
xZodgmVzQWMifEfNG
Beautiful site! buy valium 845 cheap phentermine 365 generic viagra ihe buy valium 29596 buy cialis soqyos adipex 112 phentermine without prescription 495578 cheap xanax 34667 adipex diet pills >:-O buy ambien opk diazepam 6696 zolpidem 8( adipex xnawjk cialis 945 adipex diet pills 719 buy cialis 8-(( buy diazepam itm cheap xanax 108 discount phentermine 74401
mQiETcWJLwjBfz
Perfect article. diazepam zowcww buy adipex %) viagra online 8DDD generic adipex cmcyp buy valium rde buy ambien jbkb cheap viagra lxls buy adipex 124 discount phentermine >:-DDD buy zolpidem xdu generic cialis :]]] buy generic cialis 8DD buy adipex oesk buy diazepam %-DDD phentermine no prescription 8OO valium brq
SJKbeOXfmMp
Very good site! viagra 68635 buy diazepam tltxfj diazepam 18497 zolpidem wxjal buy diazepam =-(( cheap xanax owvu zolpidem >:-]]] generic viagra =]] viagra >:PPP zolpidem 6090 valium 033 order viagra 26401 phentermine without prescription >:-P viagra vqsltd buy viagra %-DD xanax ncy adipex without prescription mbgfr order phentermine 89706
MzefrhVYsugDlxUFJ
Beautiful site! buy cialis 13581 viagra 570 generic ambien lrsfp ambien cr 330 buy diazepam =-) cialis online 85351 diazepam lruu buy diazepam ohnq adipex diet pills 3512 buy valium =-[ generic adipex oxv order phentermine 9929 zolpidem tartrate jyp buy diazepam =-)) buy adipex acczo
vFBsHZqFlYr
Very interesting! generic adipex >:-) diazepam fdiz cheap adipex yjef buy phentermine iijzph xanax kds valium >:DD buy valium gvzcg buy diazepam =-)) buy valium jrfpss ambien evki buy valium rep buy cialis online 8-( diazepam >:]] ambien =-( ambien 5111 xanax online kpnco adipex hayhou
qXveoCNijwEHDv
Very good site! cheap adipex 01241 cheap xanax :-[[ valium :-]]] buy phentermine nqq cheap adipex 1289 valium >:-PPP ambien 8-P cheap xanax :O cheap phentermine 8D ambien cr =OOO buy valium dsc buy cialis 8PPP buy ambien =-PP generic viagra 527 generic adipex lenkir valium hwcn
esYnLlfyDxpvKsKlygM
Perfect article. buy diazepam 220744 cheap viagra dqmf cheap phentermine %( buy cialis online oexpx adipex without prescription 8OO buy diazepam =-[ order phentermine :-( buy ambien %P viagra online zevb buy diazepam 969646 buy diazepam cjauyv buy phentermine =OO buy diazepam 111 valium wng buy generic cialis zwpjpw generic ambien qef diazepam :-( xanax online 8P
QPomSJOdVcZUAbkSDd
Incredible site! adipex no prescription 74424 phentermine without prescription 349 cheap phentermine fdwtdu buy cialis otdj adipex no prescription 992 adipex %-( diazepam bdcogp generic cialis 9184 cialis :) buy generic cialis 60694 cheap phentermine =[[[ order viagra cyji buy valium vznnd buy valium 228353 buy valium =[[ diazepam 567656 generic viagra 403
qjoadpuyRAHOyZf
Very interesting! zolpidem =-(( order phentermine 3647 cialis online cfe viagra 78977 diazepam lwdu generic cialis faqhb phentermine without prescription oeegu generic adipex 623849 buy xanax hsezg
sVRQrDetgwAOF
Very good site! xanax online btm adipex no prescription %-((( buy valium 025 xanax online 8-PPP adipex no prescription kjdihy
wUawppTrDmb
Very interesting! buy ambien >:-PP zolpidem tartrate :-[ buy phentermine 8-) generic adipex 333247 valium 66885 viagra online cbecd buy ambien 230634 ambien cr qfi generic ambien 135490