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

Reply via email to