On Thu, 11 May 2006, Luiz Americo wrote:
> Michael Van Canneyt escreveu: > > > sqlite is good candidate too (multiplatform,single file,fast, only > > > one > > > dll/so required) > > > > > > > Sorry, but no: > > - No external dependencies, please. > > - Specifically: sqlite is a horrible database for use in Pascal. > > > Based in what you say that? Based on extensive tests which I did and which I published in a German magazine. > In fact the TDataset descendant has better performance (see > http://www.geocities.com/camara_luiz/sqlite4fpc/benchmarks.html) than sqldb > (Mysql,Postgresql, firebird). This is so true that recently the sqldb internal > data handling schema was changed borrowing some ideas from > TCustomSqliteDataset. Of course, you are invited to try to replicate the > benchmarks and/or post new benchmarks (with the sources) you did. It has nothing to do with TDataset. I did tests based on direct API calls. > > It also has some extra features like Master/Detail, Lookup,Locate, LocateNext, > Auto Increment. > > Any way you can use sqlite using the plain interface (sqlite, sqlite3 units) > that directly call the sqlite dll. Exactly how a C program does. So the > problem is not the pascal language or implementation. This is what I did. > > And very slow for complex queries, in general. > > > Again, post benchmarks/tests. See the German Toolbox issues 1,2 and 3 of this year. > Notice that to keep code small the sqlite SQL optimizer only handles the > common queries and let the corner cases to hand optimizations. I find SELECT COUNT(PU_ID) FROM PUPIL LEFT JOIN PUPILTRACK ON (PT_PUPIL_FK=PU_ID) WHERE (PT_DATE='2005-09-06') AND (PT_CODE='I') AND (PT_TIME<='08:28:00'); A VERY simple query and the result is a factor 180 worse than Firebird or MySQL. Some timings; sqlite firebird Mysql 1 0:0:42.00 0:1:29.47 0:40.48 2 0:6:12.75 0:0:02.58 0:02.40 3 0:0:00.67 0:0:00.44 0:02.43 4 0:5:59.38 0:0:00.48 0:02.44 1. is the insert of 600.000 records. Here SQLIte is very fast. The rest are selects like the one above. I did more tests, all give comparable results: sqlite is very fast for simple stuff. And yes, I did all possible optimizations. Version 3 was used. I have a lot of experience with databases of all kinds, and I know what to test for. > > Finishing, sqlite is not for all uses neither mysql, postgres. See > http://www.sqlite.org/whentouse.html. Look, I know that SQLite is popular, but it's simply not suitable for enterprise-use nor for complex queries. Furthermore a database which says that 'we don't do typechecking' is completely on the wrong track, even more so in a Pascal environment. And this is the conclusion of my articles... Michael. _________________________________________________________________ To unsubscribe: mail [EMAIL PROTECTED] with "unsubscribe" as the Subject archives at http://www.lazarus.freepascal.org/mailarchives