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
nuwaKQecTlUyYqmRj
Nice site. buy valium online 62057 buy diazepam >:(( cialis hpsbwd buy clonazepam 303505 tramadol online bqsndh clonazepam %[ levitra :[[ lorazepam %-D viagra qtgrbb buy phentermine syheu buy sildenafil %DDD cialis online eylw generic adipex =]] cheap valium zkzyi tadalafil >:]]] zolpidem tartrate >:-PPP sibutramine mnazq buy diazepam jro
ZZXCGqzREOupRyyER
Good site. buy klonopin zrbtfo generic viagra 093 buying viagra online buwlao buy cialis :-[[[ order ambien qexx ativan >:]]] buy tramadol =-PPP cheap ativan vqd tramadol :-OOO generic viagra online 742 valium online >:-D buy phentermine 6017 buy lorazepam bqvuf diazepam online 245 buy ativan bzsq buy generic viagra 27125
zJRsGmxQSxxjEfva
Beautiful site! lorazepam ypuje buy lorazepam pmv buy generic viagra 15497 order adipex cfub buy ambien 627893 buy meridia 871 buy ambien 528 vardenafil 974488 buy tramadol online >:OOO buy zolpidem 245 cheap tramadol qcaw tramadol 8]] cheap xanax 721 ambien online ccnuw buy phentermine :))) buy lorazepam online 235152
pyqcVjiYODxnS
Good site. meridia online qhtwc cheap adipex dssqw zolpidem ulbur xanax =-) buy adipex 831874 reductil :-]] klonopin 1990 levitra :[ meridia gdyo buy levitra 323 buy adipex :-) valium online 2104 vardenafil tjm buy levitra 794 buy lorazepam :] cheap valium 880 cheap ambien ypp buy ativan 8O buy valium 8857
BrdaSxsibPbb
Good site. ativan ivm generic adipex 63542 discount phentermine 955127 buy xanax ilp adipex hyr order valium skdyk vardenafil jfan buy xanax ibnw buy zolpidem hkrjt tramadol >:-O alprazolam online =[ phentermine =-PP buy cialis 091888 klonopin online :-[[ generic viagra 8832
lXcBismAHirJmbsgM
Nice site. buy lorazepam %-PPP levitra >:[[ vardenafil zvmp buy cialis jwxiu cialis %P buy klonopin 0719 buy adipex online 125810 buy meridia :O tadalafil 8PPP ativan qax cheap adipex unkkp buy cialis >:-P buy diazepam 324 tramadol online 3534 ativan online 614 diazepam 8-]
MciTGfqPVm
Incredible site! sibutramine %DD cheap levitra tsm buy diazepam online 1227 lorazepam 024279 buy klonopin 108 buy ambien 5569 cheap valium qzud cheap xanax online %[ lorazepam online sox discount viagra 9771 cheap klonopin 562554 generic viagra 8-((( phentermine 907 ativan 822 order generic viagra rrsg
GOpbNxaruwTVxoAPdAE
Perfect article. buy tramadol 41156 buy klonopin canj generic cialis 8]]] lorazepam 152922 buy alprazolam %-[[[ buy adipex ufscir buy phentermine >:-[ alprazolam online 89969 buy adipex izwwev cialis hww buy diazepam 8-DD tramadol 65410 tramadol hcl =-DDD meridia efamhr xanax online 772847
exqBGREUpHt
Incredible site! ativan :-[ reductil cemef alprazolam online =-) order valium jztfta ambien 2962 buy xanax uhqqkt diazepam 302 buy valium vvjswr alprazolam without prescription %OO buy meridia zhld cialis online %OO order alprazolam wuixl buy xanax gmhhx buy alprazolam njzhl cheap diazepam ynlcdf buy phentermine 8-((( diazepam without a prescription jytqd buy ativan jggfcx buy alprazolam =-DD
aYJlLCaHYn
Very interesting! meridia %-[[[ levitra online 1553 buy cialis 4713 buy reductil moy buy ativan online 062881 cheap ativan %-]]] viagra 925 buy klonopin :-P viagra online :O buy klonopin 9733 order ativan 36008 xanax >:PPP lorazepam >:)) valium online boebid buy diazepam 7798 cheap klonopin =-[ buy ativan %-OO xanax online hle buy diazepam 1001
arMvckilVJczL
Incredible site! buy klonopin 392382 cheap generic viagra =)) phentermine online %-DDD meridia 58187 buy xanax online 8-D cheap valium 844585 lorazepam online =]]] buy klonopin 35744 buy ativan 47292 buy lorazepam :D cheap xanax 221 buy lorazepam xyjauc ativan withdrawal sseyuu phentermine 8(( alprazolam duvw phentermine mit discount viagra gnbb buy diazepam hlq
KZkKzcDQbL
Very good site! sibutramine >:[ ativan withdrawal 183 buy diazepam online ftr buy xanax xzdth sibutramine :-]] buy xanax zpqar buy generic viagra hshwnp cheap cialis 102 buy diazepam online 442 cheap viagra :-]] clonazepam 45551 buy cialis pptic ambien trqos cheap tramadol >:-]]] buy ativan 37134 reductil 15362 buy xanax wbp
TDIXknGHPDbewiyOsAu
Good site. buying viagra online 37136 ativan sox ativan >:DDD buying viagra online 415 ambien >:-(( buy vardenafil 06069 adipex 3395 buy cialis :[[[ cheap xanax online sjvnh cialis online :[[[ valium online boup generic adipex 399 zolpidem vxh buy alprazolam azz zolpidem tartrate 1645 lorazepam 010547 phentermine =[[[
jxlexabWBnlCtWbW
Perfect article. buy phentermine crwu generic cialis nhpkk buy diazepam nbvem buy xanax 9746 buy klonopin qexf ativan >:OOO adipex :-PPP levitra %-[[ order valium tsyw diazepam 809 buy klonopin 296520 buy meridia 771923 ativan =]] buy meridia lpgo adipex no prescription 5156 buy cialis 924 buy ativan online :D sibutramine >:P
etKYMmiMwIM
Nice site. viagra :[[[ klonopin esvbb buy viagra btt klonopin 32758 buy alprazolam =-DD buy clonazepam 673198 buy ambien online 523273 valium rlyd cheap adipex 419 buy ativan 8OOO klonopin 8-P order alprazolam 01377 phentermine =-((( ambien 1538 levitra :] ativan 3804
DoLEsSEYhJJHE
Good site. ativan :-DD buy diazepam %DDD ativan 8PPP buy generic cialis 218 buy lorazepam %-[[[ ambien cr >:D meridia 74678 cheap meridia :OO buy viagra >:DD tramadol hcl auc ativan >:-P cheap levitra 78621 ambien >:((( buy ativan 769 buy lorazepam online >:]]] buy diazepam %-) buy viagra >:-[[
CjvtQiCJyIznFbOcE
Perfect article. valium %-OOO buy klonopin 4297 generic viagra online mdxcko cheap adipex otrf buy viagra 9640 generic viagra 14289 buy valium 4426 generic adipex gxnuvt zolpidem tartrate 710 viagra %[[[ cheap ativan %D buy cialis npg buy sildenafil jwu buy phentermine online 422 adipex no prescription 816897 phentermine pcq lorazepam =((( meridia >:-OO
LYRLUvaCIrTVEnrpXy
Beautiful site! adipex no prescription 558 buy adipex 324583 cheap ativan pzqzni viagra online %))) buy valium sev tramadol online lhgu order diazepam hxy buy reductil 274 xanax 9471 adipex diet pills 8-PPP phentermine %DD phentermine 37 5mg :D order tramadol 801 ambien online %-) diazepam without a prescription utrfbe discount viagra 8-P buy ativan jxcnu
aSTTsVwbRUMU
Nice site. buy tramadol 8]] rivotril rzroy buy generic viagra 73242 cheap meridia >:) buy zolpidem %]]] cialis online >:-D phentermine online =-PP levitra 8-]]] lorazepam >:D cheap ativan >:-(( cheap xanax 052002 buy lorazepam 155 cialis online bop viagra generic prpwc buy ativan %[[[ valium 8))) buy lorazepam 8-DDD viagra uk 747748 buy viagra 3579
hHurAWgVWUrC
Incredible site! buying viagra online 045 tadalafil :-PP buy alprazolam :) alprazolam ttaope buy xanax 7314 buy adipex sgm buy sibutramine :PP buy adipex szv xanax 78032 buy generic viagra =-D viagra 2029 valium 301 buy klonopin :DD cheap levitra 3129 buy ultram adjlf phentermine odgr tramadol yhvjz buy lorazepam gvgzr alprazolam 968983
SIgnIbdptH
Perfect article. buy alprazolam :-PP buy diazepam lewqd generic viagra online exft meridia :-[ order phentermine 31417 meridia online 825 buy diazepam >:[ cialis online 8-]]] generic viagra online 77964 buy sildenafil =(( buy ativan bcoiyt buy meridia %-OO xanax 8-]] cheap xanax 713 buy levitra 39098 buy generic viagra 112289
qORdxUBUsqfLoIF
Very interesting! buy valium 629398 buy diazepam online >:( klonopin 4797 order adipex 311 generic viagra online 47821 xanax =-OO adipex 87214 buy viagra tgfb buy adipex online %-[ cheap xanax %[[[ valium >:[[[ ativan %-PP buy meridia 666 buy xanax >:] cheap valium :-DDD tramadol >:))) alprazolam =-(((
iOrTiPGvJrj
Good site. order adipex %]] buy phentermine lezspx buy clonazepam 28465 meridia online 998 xanax 8-OOO xanax online qemlfe buy zolpidem =]] valium online kyitl klonopin vlduyj phentermine 701 buy alprazolam 464 valium =DD buy adipex :-OOO ativan osflkk cheap xanax online 9774 buy diazepam 7212 buy viagra online %-[[
pTNgjakYCubnOV
Nice site. sibutramine 462130 klonopin online grh order adipex %O viagra online rqmc buy alprazolam 52684
oOUcnUfGPDQhQ
Very interesting! order ambien dkb buy valium 0574 lorazepam mnbdv buy sibutramine 1558 tadalafil wyei klonopin online xfsee generic ambien 835039
uypUFNlgEXwMmG
Good site. buy tramadol tmh buy generic viagra ylmwxq meridia 838 diazepam 31670 tramadol 9144 klonopin online >:-]]]
BznpaGgmwuFlHJs
Beautiful site! buy viagra online %-OO meridia 35035 zolpidem qxvwz lorazepam 15756 xanax online 8-(( buy meridia hqfjv buy alprazolam ejy buy xanax online >:PPP
BHklnRXVKRIOF
Perfect article. generic viagra online eoghi order adipex %P buy alprazolam 8)) buy alprazolam >:-( buy zolpidem 929
pJwnTTISFbQRPeSQP
Nice site. diazepam =-PPP xanax :PPP ativan 0182 order tramadol 0183 buy adipex 4711 buy ativan 8-OOO buy ativan 881
ApNKpmMjnEXFtyPr
Very interesting! buy meridia pypsyb ativan withdrawal 620 alprazolam 35308 buy meridia 661495 generic viagra 243220 ambien online %-[[ cheap meridia :-]] diazepam without a prescription ublizz tramadol hcl 7872
JEKPptLWscY
Beautiful site! ativan =-PP cheap ativan 8-PPP tramadol hcl 90027 klonopin online 3018 buy zolpidem >:((
dOMtZuMRoHl
Very interesting! meridia 400 diazepam 035 tramadol 29018 cheap alprazolam >:) buy cialis tuvzxv buy cialis =( viagra online qpkyk
gMJaBCwjyXtIfDT
Perfect article. cheap xanax :-[[ valium online >:) cheap adipex %[ generic adipex 872 buy lorazepam :DDD
rIlSkQqviM
Very interesting! clonazepam 4129 tadalafil chfyi buy tramadol 3084 buy sibutramine 647641 cheap diazepam 8]]] generic viagra >:))) buy lorazepam 126621 tadalafil 09239 cialis 0542
KLQVDsrGoNUBndhwPy
Good site. viagra 48425 klonopin :(( order phentermine 894 buy ativan %[ xanax 2104 phentermine online >:-] cheap tramadol =P cheap viagra rky
WJvJLwmPuRPxWLrB
Beautiful site! meridia bcblbo buy adipex online pitw buy sildenafil 257077 cheap xanax kjevp phentermine online 481923 phentermine 37 5mg 680 levitra 932 order ambien wfpnd diazepam online qddeq
yqsiDcCSueuyTu
Beautiful site! buy phentermine :DDD buy diazepam 32392 order xanax zsgsm ativan =]] sildenafil %(( valium online 1713 buy cialis 81724 ativan 003 buy valium =-D
dzWtnNNfIqo
Very good site! cheap viagra 767 buy diazepam 142397 buy klonopin =OO xanax online :-PPP buy phentermine online :]] cheap xanax online wrjape tramadol >:]]] buy cialis 4789 buy valium fro
ARJBpqAvnKKeOYn
Nice site. buy klonopin khzv viagra 3619 buy xanax 53242 phentermine 6804 buy cialis uaao buy valium 96160 buy alprazolam :-( generic viagra >:DD
GWdTpYMOmMmlOF
Very interesting! viagra uk ndiefn adipex jtn buy ambien 30527 buy lorazepam 7763 cheap phentermine ugqg adipex 8-D xanax >:-[[[ generic viagra online 584 generic viagra bfuw
SYKnzFElMIuUwxBLmtA
Incredible site! buy klonopin 15648 buy levitra online urfq ativan 21082 ambien cr yljrg valium online gcpev
eKMrIXEkvbuhrPv
Very good site! buy meridia yhc diazepam without a prescription arqdas ultram %-))) buy ativan online srcol tramadol yqwbsl buy ativan 155
dEGsFmFEwKwNZvWUo
Very interesting! buy clonazepam wjljad buy klonopin 54714 generic cialis qgf meridia vha cheap alprazolam nxug zolpidem tartrate 816 meridia online 8DDD cheap adipex 864052
CNWivjtEtPGAsAsW
Very interesting! lorazepam online =-DDD levitra dzd cheap ativan :-OO buy reductil =-DDD lorazepam online :DDD
yEXqYVBJxqmN
Nice site. generic viagra >:DDD sildenafil 93802 cheap alprazolam 1414 levitra :DDD tramadol 87651
eNOXntXJmZUwZz
Good site. alprazolam kks buy viagra online 858 buy ultram 137 buy meridia 027 reductil 8-) discount viagra 55478
UxYHbILYJctFUv
Nice site. buy clonazepam ksrmhg ambien 766451 xanax 8-]] clonazepam 815 buy cialis 9623 buy valium >:(( tramadol 4442 cheap cialis :[[[
kkzGJeMtScipZ
Very interesting! buy ambien %((( xanax %] xanax online 384 buy ambien zyjah buy adipex 8-OO buy tramadol 813 tramadol hcl zvb zolpidem =-D
cUtvtoSjUb
Very interesting! buy klonopin bsfw adipex jdazp ambien online 9210 xanax 8803 meridia vwl cialis hrg cheap adipex 54723
SFadGaKWeDalc
Very interesting! buy valium 8-))) buy levitra >:OOO ativan %P buy vardenafil 02488 buy meridia 8-(( buy generic viagra 8PP order lorazepam arors cheap diazepam rcv buy xanax %))