Page 1 of 2 1 2 LastLast
Results 1 to 15 of 29

Thread: SQLitePass Componenten

  1. #1
    Senior Member pcoenen's Avatar
    Join Date
    Apr 2001
    Location
    Tesssenderlo, België
    Posts
    239

    SQLitePass Componenten

    Hallo,

    Een setje van 'Open Source' componenten die je kan gebruiken om een SQLite DB te connecten.

    http://source.online.free.fr/

    Iemand ervaring met deze componenten?

    Heb zelf een kleine test applicatie geschreven waarin gebruik gemaakt wordt van de database en dataset componenten. Simpele tabel met 3 velden (Text, INT64 en INTEGER). Via het dataset die ik een append van 1000 records. Complete bewerking (open, append x 1000, close) duurt 8 seconden. Dus +/- 8ms per append (op een windows XP virtuele machine). Ik zelf heb geen idee van tijden. Is dit in orde deze 8 ms. Kan je instellingen van de SQLIte aanpassen dat deze sneller deze append doorvoert.

    Groeten,
    Pascal
    Last edited by pcoenen; 29-Mar-10 at 17:09.

  2. #2
    Tja, ik kan me een beroerdere performance voorstellen, maar het zegt misschien niet zoveel. Het hangt ook af van de componenten (bijvoorbeeld een grid) die aan die componenten hangen, en hoe je die appends uitvoert.

    Je zou eens kunnen proberen om een samengesteld insert statement te maken. SQLite ondersteunt schijnbaar geen insert met meerdere value-lists, maar wel losse selects. Je zou dus een statement kunnen maken dat er ongeveer zo uitziet.
    SQL Code:
    1. INSERT INTO Tabel(VeldA, VeldB)
    2. SELECT 'WaardeA1', 'WaardeB1' UNION ALL
    3. SELECT 'WaardeA2', 'WaardeB2' UNION ALL
    4. SELECT 'WaardeA3', 'WaardeB3' UNION ALL
    5. SELECT 'WaardeA4', 'WaardeB4' UNION ALL
    6. SELECT 'WaardeA5', 'WaardeB5' UNION ALL
    7. SELECT 'WaardeA6', 'WaardeB6' UNION ALL
    8. SELECT 'WaardeA7', 'WaardeB7' UNION ALL
    9. SELECT 'WaardeA8', 'WaardeB8'  ....
    Daarnaast kun je eens kijken of je verschil meet als je expliciet een transaction opent voor deze 1000 inserts.

    Even als test: Ik heb een tabel gemaak waarin ik 1000 keer de waarde 1 insert. Dat lukt met losse inserts in 0,14 seconde. Als ik er een insert met een select van maak, zoals in bovenstaand voorbeeld, dan lukt het in minder dan 10 ms (krijg 0 terug, maar da's een afronding).

    De testdatabase is Oracle, en ik herhaal de test wel een aantal keer omdat zo'n query de eerste keer even geparsed, geïnitialiseerd en geoptimaliseerd wordt, waardoor het een paar tiende sec langer duurt. Bij 8 seconden kom ik niet in de buurt, maar het is misschien ook niet helemaal vergelijkbaar qua database..
    1+1=b

  3. #3
    Naast losse INSERT statements hebben veel databases ook een bulk insert mogelijkheid. In het geval van SQLite is dat blijkbaar het .import commando. Misschien kun je daar nog meer snelheid uithalen. Ik vond een voorbeeld op stackoverflow: Faster bulk inserts in sqlite3?.
    Marcel

  4. #4
    Ik (wij) gebruiken zelf de DiSqlite componenten, maar het is raadzaam bij bulkacties om met transacties te werken.
    (heb ff gekeken in de help file van sqlitepass, en transacties worden ondersteund, hoe moet je zelf ff uitzoeken).
    Je krijgt dan iets van (PseudoCode):

    Code:
    Database.StartTransAction
    for idx := 0 to 10000 do
        Query.Execute("INSERT ....................");
    Database.Commit;
    Waar marcel op doelt is het .import commando van de "losse" sqlite commando tool (soort dos-prompt voor sqllite), ook wel CLI genaamd
    Last edited by mvanrijnen; 29-Mar-10 at 23:54.

  5. #5
    Ah, ik dacht inderdaad dat dat ook als gewone SQL opdracht verzonden kon worden. Bedankt voor de update.
    Marcel

  6. #6
    mov rax,marcov; push rax marcov's Avatar
    Join Date
    Apr 2004
    Location
    Ehv, Nl
    Posts
    10,357
    8ms is ongeveer de seektime van de harddisk. Het lijkt dus of ie op elke append direct een schrijfactie uitvoerd, zonder buffering.

    Het is dus taak een manier te vinden met wat buffering. Wat Marcel aangeeft is daar mogelijk een van.

  7. #7
    Senior Member pcoenen's Avatar
    Join Date
    Apr 2001
    Location
    Tesssenderlo, België
    Posts
    239
    Bedankt voor de informatie allemaal, werk aan de winkel. Heb ook wat problemen met de componenten zelf. Het aanmaken van de database via de componenten verloopt niet zoals ik gedacht had. Zo worden oa niet de standaard instellingen genomen zoals ik deze op de SQLite kan terugvinden (uitgebreide help op de website beschikbaar).

    Ik kan niet zo dadelijk een 'actief' open source project vinden ivm SQLite componenten.
    Er is Zeos maar ik denk dat dit wat zwaar is voor wat ik het nodig heb. Dan is er nog: http://blog.synopse.info/category/Op...ite3-Framework

    Dit is echter een ORM aanpak. Wordt moeilijk moest deze persoon later stoppen met dit project.

  8. #8
    mov rax,marcov; push rax marcov's Avatar
    Join Date
    Apr 2004
    Location
    Ehv, Nl
    Posts
    10,357
    Ik zou Zeos gewoon een kans geven. Het lijkt extreem populair en veel gebruik, hetgeen meestal een goed teken is in open source. Wat is precies je probleem hiermee?

    Enige andere alternatief dat ik ken is FPC's SQLDB (met sqllite) driver converteren. Maar daar worden ook konstant bugs op gerapporteerd.

  9. #9
    Ik zou ook zeker de ODBC / ADO combinatie testen.
    Marcel

  10. #10
    Quote Originally Posted by marcov View Post
    8ms is ongeveer de seektime van de harddisk. Het lijkt dus of ie op elke append direct een schrijfactie uitvoerd, zonder buffering.

    Het is dus taak een manier te vinden met wat buffering. Wat Marcel aangeeft is daar mogelijk een van.
    Klopt is standaard in Sqlite, vandaar het gebruik van BeginTransaction/Commit, naast het daadwerkelijke nut van een transactie, werkt dit dus ook als buffer.

  11. #11
    Senior Member pcoenen's Avatar
    Join Date
    Apr 2001
    Location
    Tesssenderlo, België
    Posts
    239
    @Marcov

    Ik zou Zeos gewoon een kans geven. .. Wat is precies je probleem hiermee?
    Euh, hmm, ja wat is eigenlijk mijn bezwaar. Ik heb dit eens ergens hier op het forum gelezen. Te zwaar voor wat ik nodig heb misschien. Nee goed, ik probeer het. Stom van me om dit niet eerder te doen. Ik hou jullie op de hoogte wat dit als resultaat geeft tov SQLPass.

  12. #12
    Senior Member pcoenen's Avatar
    Join Date
    Apr 2001
    Location
    Tesssenderlo, België
    Posts
    239
    Nieuwe test maar dan met Syncronous mode OFF is 3 seconden (nog steeds met SQLitePass).
    Testen ook uitgevoerd met Zeos. Resultaten zijn +/- hetzelfde (iets sneller met Zeos).

    Bijkomende vraag, mijn bedoeling van deze testen is de volgende:

    - Mijn applicatie scant files en folders en insert deze in een database
    - Bij elke file/folder wordt er gekeken of deze reeds aanwezig is in de database

    Momenteel gebruik ik een clientdataset als memory database. Dit zou ik graag vervangen door een SQLite database.
    Wat is nu het beste:
    - Opnieuw een dataset component gebruiken (Bv. SQLitePassDataSet)
    - of gebruiken maken van Zeos en een Query component (Query met INSERT + QUERY met Select en dit in combinatie met parameters).

    Wat denken jullie?

    Goed ik ga dus voor de volgende oplossing:
    - of gebruiken maken van Zeos en een Query component (Query met INSERT + QUERY met Select en dit in combinatie met parameters).

    @Marcov
    Bedankt voor de Zeos tip.

    @mvanrijnen
    Getest en inderdaad "Speedy Gonzales".
    Last edited by pcoenen; 07-Apr-10 at 18:36.

  13. #13
    Senior Member Antoine's Avatar
    Join Date
    Apr 2011
    Location
    Molenwaard
    Posts
    2,399
    Hey,

    zijn die componenten voor SQLite nog steeds te pompen? Ik krijg em niet te pakken...

    Gr Anton
    " De waarde van het leven is niet in geld uit te drukken "

  14. #14
    John Kuiper
    Join Date
    Apr 2007
    Location
    Almere
    Posts
    8,747
    Hoe bedoel je. Bij mij staat de zip file gewoon gedownload van die site.
    Delphi is great. Lazarus is more powerfull

  15. #15
    Senior Member Antoine's Avatar
    Join Date
    Apr 2011
    Location
    Molenwaard
    Posts
    2,399
    Quote Originally Posted by jkuiper View Post
    Hoe bedoel je. Bij mij staat de zip file gewoon gedownload van die site.
    Nou ik weet niet welke link jij heb gedaan, maar ik krijg zo'n mooie About Blanc

    Maar als jij een werkende link heb, ik hou me aanbevolen

    Gr Anton
    " De waarde van het leven is niet in geld uit te drukken "

Page 1 of 2 1 2 LastLast

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •