PDA

View Full Version : [SQLite] Prestazioni


vhost87
06-11-2009, 19:50
Ciao a tutti,

chiamo in causa tutti coloro che abbiano anche un minimo di esperienza di sviluppo con questo 'database'.

Ho sempre usato SQLite per 'cagatelle' (passatemi il termine) senza considerarlo un database a tutti gli effetti; quindi ci memorizzavo sessioni e dati di pagamento nelle web application, file caricati e trasformati/convertiti in altre applicazioni ecc... quindi come archivio 'temporaneo' prima di trasferire tutto su qualcosa di più blasonato come MySQL e PostgreSQL.

Dato che vorrei scrivere un 'giochino' che sia

a) LEGGERO
b) MULTI-PIATTAFORMA (Pensavo un qualcosa in Java o Python + wx, ma nemmeno un C++ e wx con successivi porting su altre piattaforme mi dispiace come idea)
c) con un RDBMS alle spalle per immagazzinare i dati (e si il giochino sarà prettamente gestionale)

Pensavo di puntare su SQLite. Dato che MySQL e altri RDBMS è impensabile utilizzarli (si vincolerebbe l'utente ad installarli) ho pensato a SQLite.

Vale la pena? Come prestazioni come siamo messi?
Fate conto che gestirà qualche migliaio di dati, non di più... e la maggior parte integer a 32 bit e floating point a singola precisione.
:D

RaouL_BennetH
06-11-2009, 22:39
mi associo anche io dato che neanche a farlo a posta, qualche
giorno fa mi sono innamorato di sqlite :)

In ufficio ho convertito subito alcune applicazioni che si basavano su postgresql (per delle stupidaggini) ed infatti avevo sempre la sensazione di sparare alle mosche col cannone (cit.)

Passato tutto su sqlite, non ho notato nulla di significativo a livello di prestazioni delle applicazioni.

E' OVVIO (e sottolineo) che parlo anche io di poche migliaia di dati e dove non c'è nessuna esigenza di transazioni, concorrenza e quant'altro in merito alla multi utenza.

tomminno
07-11-2009, 14:38
Personalmente ho sempre visto Sqlite perfetto sostituto di Access per tutti quei programmi personali che necessitassero di una base dati e nei quali usare un dbms tradizionale fosse un pò overkill.
Recentemente ho cominciato ad usare sqlite per il log (invece dei soliti file, una manna per le ricerche) di applicativi web e fin'ora non ho incontrato controindicazioni.
Nei test che avevo condotto prima di adottarlo ero riuscito tranquillamente a lavorare con 100 thread contemporanei che provavano a scrivere e leggere.

cdimauro
07-11-2009, 15:09
Ciao a tutti,

chiamo in causa tutti coloro che abbiano anche un minimo di esperienza di sviluppo con questo 'database'.

Ho sempre usato SQLite per 'cagatelle' (passatemi il termine) senza considerarlo un database a tutti gli effetti; quindi ci memorizzavo sessioni e dati di pagamento nelle web application, file caricati e trasformati/convertiti in altre applicazioni ecc... quindi come archivio 'temporaneo' prima di trasferire tutto su qualcosa di più blasonato come MySQL e PostgreSQL.

Dato che vorrei scrivere un 'giochino' che sia

a) LEGGERO
b) MULTI-PIATTAFORMA (Pensavo un qualcosa in Java o Python + wx, ma nemmeno un C++ e wx con successivi porting su altre piattaforme mi dispiace come idea)
c) con un RDBMS alle spalle per immagazzinare i dati (e si il giochino sarà prettamente gestionale)

Pensavo di puntare su SQLite. Dato che MySQL e altri RDBMS è impensabile utilizzarli (si vincolerebbe l'utente ad installarli) ho pensato a SQLite.

Vale la pena? Come prestazioni come siamo messi?
Fate conto che gestirà qualche migliaio di dati, non di più... e la maggior parte integer a 32 bit e floating point a singola precisione.
:D
Penso vada bene per quello che ti prefiggi. Per le prestazioni c'è un vecchio documento qui (http://www.sqlite.org/speed.html), ma non farci molto affidamento: riguarda versioni vecchie di tutti gli engine utilizzati.

Con Python a partire dalla 2.5 lo trovi già integrato: basta importare il modulo sqlite3 (nella documentazione allegata a Python trovi la sezione dedicata a SQLite3 e alcuni esempi, se non ricordo male; è semplicissimo da usare).

Comunque personalmente dopo anni di esperienza con engine SQL non mi sono trovato bene: gli mancano troppe cose. Avevo iniziato a fare un programmino di catalogazione di dati, ma la testa mi sempre a Stored Procedure e Trigger, e l'ho abbandonato tornando FireBird, che è un signor engine SQL e disponibile tra l'altro in versione embedded (zero installazione e configurazione).

cionci
07-11-2009, 15:20
Io credo che per un gestionale non ci sia bisogno di prestazioni così alte. Suppongo che sia sufficiente.

Sostituisci le wxWidgets con le Qt 4.5 ;) Nel caso tu usassi C++ ti consiglierei QtCreator come IDE (integrato nel QtSDK).

vhost87
07-11-2009, 15:21
Penso vada bene per quello che ti prefiggi. Per le prestazioni c'è un vecchio documento qui (http://www.sqlite.org/speed.html), ma non farci molto affidamento: riguarda versioni vecchie di tutti gli engine utilizzati.

Con Python a partire dalla 2.5 lo trovi già integrato: basta importare il modulo sqlite3 (nella documentazione allegata a Python trovi la sezione dedicata a SQLite3 e alcuni esempi, se non ricordo male; è semplicissimo da usare).

Comunque personalmente dopo anni di esperienza con engine SQL non mi sono trovato bene: gli mancano troppe cose. Avevo iniziato a fare un programmino di catalogazione di dati, ma la testa mi sempre a Stored Procedure e Trigger, e l'ho abbandonato tornando FireBird, che è un signor engine SQL e disponibile tra l'altro in versione embedded (zero installazione e configurazione).

Grazie come sempre molto professionale e disponibile.
FireBird non lo conosco, ci darò un occhio (ne ho sentito parlare molto bene).
Per quanto riguarda SQLite integrato in Python si mi sono accorto, ho la 2.6.1 mi pare... e cavolo se è comodissimo. Infatti mi sa che abbandono Java come idea per questo progetto.

Anche con C++ mi sono trovato bene, a parte imprecare con puntatori ecc... forse non è il massimo per un piccolo game. Poi valuterò strada facendo :D

vhost87
07-11-2009, 15:21
Io credo che per un gestionale non ci sia bisogno di prestazioni così alte. Suppongo che sia sufficiente.

Sostituisci le wxWidgets con le Qt 4.5 ;) Nel caso tu usassi C++ ti consiglierei QtCreator come IDE (integrato nel QtSDK).

Non mi fanno impazzire le QT se devo essere sincero... anche per via della licenza che si portano dietro; pensavo GTk+ come alternativa... :stordita:

cionci
07-11-2009, 15:28
Non mi fanno impazzire le QT se devo essere sincero... anche per via della licenza che si portano dietro; pensavo GTk+ come alternativa... :stordita:
Le Qt sono diventate LGPL ormai da un bel po' ;)

vhost87
07-11-2009, 15:29
Le Qt sono diventate LGPL ormai da un bel po' ;)

Sono rimasto indietro :D :D sai vivendo sul mondo della Mela...

cionci
07-11-2009, 15:35
Sono rimasto indietro :D :D sai vivendo sul mondo della Mela...
Provale: http://qt.nokia.com/downloads/sdk-mac-os-cpp

C'è incluso un IDE che sono convinto che ti sorprenderà.

vhost87
07-11-2009, 15:38
Provale: http://qt.nokia.com/downloads/sdk-mac-os-cpp

C'è incluso un IDE che sono convinto che ti sorprenderà.

Promesso, grazie caro :)

Le Qt le usavo al tempo di KDE 3 su debian...

Grazie!
Buona giornata!

cdimauro
07-11-2009, 17:30
Grazie come sempre molto professionale e disponibile.
FireBird non lo conosco, ci darò un occhio (ne ho sentito parlare molto bene).
Per quanto riguarda SQLite integrato in Python si mi sono accorto, ho la 2.6.1 mi pare... e cavolo se è comodissimo. Infatti mi sa che abbandono Java come idea per questo progetto.

Anche con C++ mi sono trovato bene, a parte imprecare con puntatori ecc... forse non è il massimo per un piccolo game. Poi valuterò strada facendo :D
Puoi provare PyGame (http://www.pygame.org/news.html), che per il tuo scopo secondo me calza alla perfezione.

Comunque le QT sono disponibili anche per Python: PyQT (http://wiki.python.org/moin/PyQt). E ovviamente puoi usare anche il QTDesigner (che supporta diversi linguaggi, appunto).

vhost87
07-11-2009, 17:35
Puoi provare PyGame (http://www.pygame.org/news.html), che per il tuo scopo secondo me calza alla perfezione.

Comunque le QT sono disponibili anche per Python: PyQT (http://wiki.python.org/moin/PyQt). E ovviamente puoi usare anche il QTDesigner (che supporta diversi linguaggi, appunto).

Sisi conosco le PyQT e conosco anche PyGame come libreria.
Adesso valuto; il problema è che Python non lo conosco poi così bene, ho bisogno di un buon libro cartaceo... pensavo quello di Alex Martelli!

cdimauro
07-11-2009, 17:58
Lo impari molto velocemente, te l'assicuro. Come libro prendi "Imparare Python", che è eccellente e lo trovi facilmente online.

vhost87
07-11-2009, 18:07
Lo impari molto velocemente, te l'assicuro. Come libro prendi "Imparare Python", che è eccellente e lo trovi facilmente online.

Guarderò dopo su Amazon :)
Grazie della dritta, così metto sul CV un altro linguaggio oltre i soliti classici a parentesi graffa...
:D :D

cdimauro
07-11-2009, 19:24
Non farlo per il CV, che serve a poco: fallo per te, per il tuo bagaglio culturale, e per provare un linguaggio che, se ben padroneggiato, ti farà pensare a soluzioni diverse per i problemi. ;)

vhost87
07-11-2009, 19:33
Non farlo per il CV, che serve a poco: fallo per te, per il tuo bagaglio culturale, e per provare un linguaggio che, se ben padroneggiato, ti farà pensare a soluzioni diverse per i problemi. ;)

Beh il CV principale sta nel nostro cervello ;)