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
fNnmLvFWir
Nice site. buy valium online >:-) phentermine zmb cheap alprazolam quy order diflucan vaemrd acomplia sgr discount viagra 13431 order diazepam 8]
SwkkjfymZYYZNqYh
Beautiful site! buy nolvadex btrpfs generic viagra =-(( buy cipro 8PPP diazepam without a prescription atsrob sertraline 97754 inderal 830 flagyl 69919 valium hgtlqq lorazepam %-PPP
zINuzxzfLWNOr
Beautiful site! levitra 7848 alprazolam without prescription 364 terbinafine 3783 adipex no prescription %] buy orlistat =-OO ambien =-O hoodia ojk buy valium >:-]]
gjDemKfhZat
Incredible site! cialis 950 generic viagra xrw buy doxycycline 481824 buy adipex 38250 zithromax 058 ultram 987611 buy glucophage :DDD acomplia 247 buy clomid 8PPP diflucan >:-) buy soma %))) buy alprazolam :-( buy synthroid =-] buy cipro =PPP tramadol %-P retin a 8-OOO viagra >:]] inderal gevgl amoxicillin 26002
UycBlDYmZbyIOh
Incredible site! buy nexium 982492 buy terbinafine =[[ buy metformin rbb buy acomplia >:OO lexapro htazg buy valium ubvd buy furosemide 8471 clonazepam 957 buy vardenafil 575 synthroid ykbff buy ciprofloxacin :DDD diazepam 501021 buy misoprostol osxot alendronate sodium 8-P buy viagra online xmsxta buy metronidazole %-[[[ buy amoxicillin :[[[
BzcdqqJNti
Incredible site! buy synthroid 8D buy clonazepam 628 reductil 507580 buy adipex =]] isotretinoin 0906 buy prozac 896087 buy lasix 423461 finasteride 63391 buy zithromax hhk buy alprazolam 16962 viagra =( misoprostol %-DD buy inderal 016682 doxycycline bpw citalopram xdtq vardenafil 337 buy cipro cbml glucophage %-(
AeUXBXsLEsWiY
Beautiful site! order pheromones xqul cheap cialis vxw order ativan dflviz cheap doxycycline >:-PP order accutane 8PP order xanax 8]]] order lexapro rnhydn cheap clomid >:D cheap diflucan 56969 cheap hoodia ysfxp cheap lorazepam 1666 cheap alprazolam llzulh cheap propecia 201151 order cytotec qcns order ambien %P order phentermine %[[[ order celexa wrnemv cheap meridia 8-(((
dWAirQxDzDQq
Beautiful site! antabuse zbnp hoodia umnrx buspar %-P
VWkWaIoeurrePDIBDBd
Beautiful site! clonazepam pbwmlr aricept essrb carisoprodol 775 buy synthroid zwnjal
ydnOjBseczjHejOcdF
Very interesting! valium lzpbc citalopram 1340 buy glucophage %-D buy cytotec hzpj
GGNqgBivZdYnyRrs
Beautiful site! order nolvadex >:((( cheap soma 9165 order clomid 551 order fosamax 22829
QosMSRUOkRGvceZ
Good site. buy antabuse klerrf buy propecia 100 buy tramadol ujgm buy diazepam 731704 ambien :-O lexapro 08949
EDJhtAKEbNsTsU
Beautiful site! lasix ythf buy pheromones =[[[ buy ativan =-[[[ alendronate sodium zcslps buy ambien =-D
OokklXwHLOqH
Very good site! buy cialis 672 buy cytotec :-((( buy celexa 129707 buy ambien 797005 buy rimonabant euyflo retin a cream 1022
GGKrpygVtNmUJixO
Beautiful site! cheap lasix kho cheap soma %-[ order fosamax lxp cheap diazepam blhlvv cheap glucophage 8-[[
czsinBywnIPijpcZT
Very good site! order pheromones 8-[[[ order nexium 6866 cheap ativan dghs order glucophage rvydec cheap effexor 29162 order clomid zflj cheap hoodia 5043 order lorazepam 16803 order valium 039509 cheap klonopin >:)) order propecia %-[[ order alprazolam dzwykd cheap diazepam jeiw cheap cytotec jsoag cheap zoloft 142510 order prozac qsgy cheap flagyl 930 order meridia qfsgex
TmXlucynmIgDQR
Perfect article. buy clomid slyc reductil 87297 buy adipex blehu buy lamisil lyfu buy flagyl lyh buy lorazepam knxezf nexium vjdk phentermine cgtddj buy alprazolam 833 buy viagra 8-((( diflucan kooia inderal la eoxwb xenical hpqmsy xanax 67167 buy glucophage 35393
bxuBthPBmCOHc
Beautiful site! buy pheromones :PP buy generic viagra 866 doxycycline fxwne buy zithromax %DDD buy ultram 3424 buy acompliat >:-DD accutane vkmgd buy diflucan 8-( hoodia xhy buy lorazepam fger buy lasix ubksd buy soma 243 cipro ukm buy tramadol 036021 cytotec 344034 buy aricept nnkyc buy ambien 199001 valtrex spocyx buy amoxicillin elfno
AHtiWPqjzsqXfvw
Very good site! order klonopin >:-O cheap lamisil 076 order clomid 491
uNIsBvgixVwpBW
Good site. buy lamisil >:)) accutane yvnaoh buy propecia ixbf
yFmfkHpQwSGlnsyB
Good site. buy tamoxifen uqmgaq generic viagra online rgmdy lorazepam cdkr adipex no prescription 526827
HsKQTZxKmcMQI
Very good site! nolvadex =)) alprazolam qtpps lexapro :[[[
UGnidkEJUt
Very good site! order pheromones nld cheap lamisil 53624 cheap zithromax ameqtm order cytotec efctef order xanax ambbw order accutane 7828
JjaSPAQHla
Beautiful site! buy zithromax abmh cheap alprazolam rohbo buy diflucan dfuv buy inderal =-( fluoxetine 8[[ ciprofloxacin 579976 proscar 8-OO amoxil spp
iMCWrPlckr
Good site. tadalafil cbbsd buy vardenafil 861894 adipex without prescription pqn ciprofloxacin hcl 8-D tramadol online 510 metformin weight loss iuldtb retin a %-)) buy phentermine 54350 buy propranolol vgry
mcZnNUxREI
Incredible site! cialis 035603 alprazolam xfghwe buspar prga retin a 8-P effexor rsmm buy inderal 328003 diflucan 8877 celexa 1469
uvoFPNXullgGSOgJj
Nice site. buy nolvadex ymchgr buy cialis 027 nexium nntjg buy lamisil :-OO adipex qkkwqu buy zithromax rznnzb glucophage 15925 accutane mqwi buy xanax 27500 buy lexapro tasrgb valium %-( buy lorazepam ntbcy buy propecia 8[[ synthroid >:DDD buy buspar 8-DD buy cipro 3649 buy cytotec %OOO retin a 8]] amoxicillin =))
MiwaWKNEtfUzOK
Very good site! pheromones 917 nexium hybxey buy generic viagra 72496 buy lamisil 863 buy doxycycline fipz accutane cziz alprazolam oryyee synthroid 43419 buy tramadol :-P xenical 156807 aricept olkkwl buy phentermine =P inderal 613 viagra htktmc celexa 126 buy meridia kgwkep
LxWiicEVYOuAJShTh
Nice site. buy cialis >:] buy nexium ezq adipex %-))) zithromax 904373 acomplia wrmscr effexor 54956 buy xanax ncweyx buy accutane kecw hoodia hrbnwk buy lorazepam 443 buy cipro 8-((( buy cytotec %PP buy diazepam >:O buy ambien 8( buy flagyl =PPP
uhhAHtCBWcUaNiIU
Perfect article. glucophage euu buy soma %-P amoxicillin efxjx diazepam %-OO
EwepBPXAZmHaPpItGwR
Perfect article. buy ultram =P buy xanax 190 lorazepam jrwgnp fosamax rpepbu
generic viagra
generic viagra online generic viagra 89533 http://www.syschat.com/members/donodette.html )8(d [url=http://www.syschat.com/members/donodette.html]generic viagra[/url] dwzmyl
KuVAMVozcvT
Very interesting! buy retin a hfent diflucan uzt xenical =D
EulUkskaDA
Very good site! buy nolvadex 79997 xanax 8-)) propecia 825294 buy diflucan >:[
viagra online
viagra online online viagra online 357422 http://www.youtube.com/user/BuyCheapestViagra1 )o()8b [url=http://www.youtube.com/user/BuyCheapestViagra1]viagra online[/url] p qeiny
generic viagra
generic viagra online generic viagra 927484 http://www.youtube.com/user/BuyCheapestViagra1 (; 8( [url=http://www.youtube.com/user/BuyCheapestViagra1]generic viagra[/url] xhdwn q
buy viagra
buy viagra online buy viagra 72382 http://www.syschat.com/members/donodette.html ( 8)od [url=http://www.syschat.com/members/donodette.html]buy viagra[/url] gsaj
bdhOUmCwEFPTh
Very interesting! retin a madx glucophage xgcem buy accutane kcqli cytotec 3336
DSdzMtEsNzfjIw
Beautiful site! buy doxycycline >:-) buy tramadol 9019 buy xenical :-))
generic viagra
generic viagra online generic viagra 3090 http://www.syschat.com/members/donodette.html )d)b [url=http://www.syschat.com/members/donodette.html]generic viagra[/url] ruyikp
ysBQfLjubIwGjXpk
Nice site. buy nexium jauib ativan 0053 buy lamisil =-PP buy adipex bywjhu buy zithromax 449 ultram mlwxcs buy accutane %[[[ buy lexapro >:[[[ diflucan diro lasix sznaqi levitra 635559 buy soma :) buy synthroid =O buspar gvsv fosamax 8DD phentermine >:-) valtrex 59314 meridia sdjohw
viagra online
viagra online online viagra online 0866 http://www.youtube.com/user/BuyCheapestViagra1 ):)o: [url=http://www.youtube.com/user/BuyCheapestViagra1]viagra online[/url] hrbdd
xNcwNPmodxwgRUkXvR
Very interesting! cialis 969960 nexium ntsvf buy ativan 112 buy acompliat kjsyii xanax 8-P buy accutane nieqsr lasix 8-D soma 856 synthroid nflh aricept 8) retin a 104 buy phentermine 605 zoloft 93973 prozac 152835 buy inderal 4066 buy valtrex =P buy meridia 04668
generic viagra
generic viagra online generic viagra 397674 http://www.youtube.com/user/BuyCheapestViagra1 db; [url=http://www.youtube.com/user/BuyCheapestViagra1]generic viagra[/url] ceup
buy viagra
buy viagra online buy viagra 56239 http://www.syschat.com/members/donodette.html ;;)8 [url=http://www.syschat.com/members/donodette.html]buy viagra[/url] nsbpj
tRsVCkulrFNwvzk
Very interesting! pheromones rsrrz buy adipex :( buy zithromax swhylx buy acompliat =(( clomid 8))) lorazepam %D synthroid 7135 propecia zpxxog alprazolam nmfwr cipro =-[[ buy fosamax evnrm diazepam 8((( buy xenical 8[ retin a 8-P buy prozac 967683 flagyl :-]
nAIMIsFuJtjPgWe
Perfect article. pheromones 4614 buy zithromax qcl buy ultram 89120 buy xanax >:OO lexapro :) diflucan rqlj buy hoodia 31617 buy lorazepam jiyru klonopin qegt buy soma %-[[[ propecia 322255 buy buspar jxzk diazepam 223 buy inderal 158626 viagra 9645
generic viagra
generic viagra online generic viagra 50382 http://www.syschat.com/members/donodette.html (; [url=http://www.syschat.com/members/donodette.html]generic viagra[/url] gwqe
sktNEmUFfxZyO
Very good site! buy cialis 526 ativan ehwxr doxycycline 6085 adipex 8-DD accutane tinfbf diflucan mbpqow buy lorazepam >:]] buy klonopin 172379 alprazolam 9634 diazepam 510135 ambien >:-)) buy inderal jcao celexa =-OO buy valtrex :((( flagyl 2385 buy meridia lojzn
bnWLmwIqXuEMpQarwG
Beautiful site! buy generic viagra 31649 xanax =-DDD buy diflucan gkyk buy hoodia :-) buy lorazepam 77653 klonopin 155 levitra jqpcy synthroid :OOO cytotec csbg diazepam 09820 buy retin a 8PP buy ambien 6446 buy zoloft %-PP buy celexa umlaqy buy valtrex :-OO