Italian community of Lazarus and Free Pascal

Programmazione => Databases => Topic aperto da: SB - Giugno 14, 2019, 05:59:32 pm

Titolo: Consiglio su DBMS multipiattaforma stand-alone
Inserito da: SB - Giugno 14, 2019, 05:59:32 pm
Sto migrando dei vecchi progetti scritti in Delphi e vorrei fare qualcosa che vada bene anche su Linux
Mi servirebbe un DBMS stand-alone (da includere nelle applicazioni, senza necessità del server) multipiattaforma (almeno Windows Linux)
Da utilizzare via SQL (che sia più standard possibile), multiutente, transazionale, indicizzato
Vedendo un po' cosa è supportato dal FreePascal, mi starei orientando su Firebird (che eventualmente avrebbe anche la versione con server)
Mi confermate che è un buon prodotto con le caratteristiche suddette?
Avete altri suggerimenti?
Si usa la libreria SqlDB o mi consigliate altro?

Titolo: Re:Consiglio su DBMS multipiattaforma stand-alone
Inserito da: nomorelogic - Giugno 14, 2019, 07:41:28 pm
Firebird è sicuramente una buona scelta, non ci sono dubbi.

Per librerie accesso SqlDB o Zeos sono tutte e 2 stabili.


Edit:
sulla conformità ansi ho trovato questo
https://www.firebirdsql.org/en/sql-conformance/
Titolo: Re:Consiglio su DBMS multipiattaforma stand-alone
Inserito da: xinyiman - Giugno 15, 2019, 11:07:17 am
Io ti consiglio il connubio firebird / zeos (lo uso con successo da almeno 6/7 anni e non tornerei indietro)
Titolo: Re:Consiglio su DBMS multipiattaforma stand-alone
Inserito da: SB - Giugno 16, 2019, 04:12:33 pm
ok grazie  :D
Inizio a provare Firebird
Titolo: Re:Consiglio su DBMS multipiattaforma stand-alone
Inserito da: SB - Giugno 16, 2019, 06:31:45 pm
Purtroppo sembra che Firebird non gestisca l'accesso contemporaneo al database. Da quel che capisco la versione embedded prevede l'utilizzo da parte di un singolo utente.
A me servirebbe qualcosa che gestisca la multiutenza, da poter usare anche nei casi in cui non posso installare nulla sul server, come ad esempio una applicazione web

Una alternativa sembra essere Sqlite che gestisce la multiutenza rendendo sequenziali le scritture mettendo un lock al file del database.
Non è il massimo, ma non dovendo gestire grandi numeri (altrimenti mi orienterei diversamente) mi sembra accettabile
Sqlite sembra essere un po' limitato nelle funzionalità
Sembra che php gestisca nativamente l'accesso a Sqlite
Cosa pensate di Sqlite?
Titolo: Re:Consiglio su DBMS multipiattaforma stand-alone
Inserito da: nomorelogic - Giugno 17, 2019, 09:20:30 am
Una alternativa sembra essere Sqlite che gestisce la multiutenza rendendo sequenziali le scritture mettendo un lock al file del database.
Non è il massimo, ma non dovendo gestire grandi numeri (altrimenti mi orienterei diversamente) mi sembra accettabile

mettere il lock al database quando si scrive non è cosa da poco...
potrebbe accadere che se un client va in crash (o loop particolarmente lungo) mentre c'è il lock, si piantano tutte le altre applicazioni degli altri utenti

potresti vedere se riesci ad identificare un pc client che possa fare da server per firebird, noi di solito facciamo in questo modo
firebird in fondo non richiede molte risorse e, se un giorno l'applicazione dovesse crescere, beh... si tratta di acquistare un i7 e metterlo da qualche parte a fare da server :)

Titolo: Re:Consiglio su DBMS multipiattaforma stand-alone
Inserito da: xinyiman - Giugno 17, 2019, 09:37:34 am
Se non puoi installare nulla allora forse conviene orientarsi su sqlite, diversamente sono concorde su tutto quello che ti ha detto nomorelogic
Titolo: Re:Consiglio su DBMS multipiattaforma stand-alone
Inserito da: SB - Giugno 17, 2019, 05:49:53 pm
mettere il lock al database quando si scrive non è cosa da poco...
potrebbe accadere che se un client va in crash (o loop particolarmente lungo) mentre c'è il lock, si piantano tutte le altre applicazioni degli altri utenti

Hai ragione, il crash di un client potrebbe tenere bloccato tutto.
Dopo la tua osservazione ho letto qualcosa a tale proposito. Sembra che nelle ultime versioni di sqlite abbiano curato questo aspetto cercando di gestire meglio i lock per aumentare la concorrenza.
Però servirebbe qualche prova per vedere cosa succede in caso di problemi.

L'unica soluzione è provare ad usarlo.
Se i componenti Lazarus sono sufficientemente generici per adattarsi ai vari database, spero di non avere grossi problemi a passare da sqlite a firebird o vicerversa

Non ho grandi esigenze. Mi basta un DBMS per piccole applicazioni desktop e per siti web poco frequentati dove non si voglia pagare un mysql.


Titolo: Re:Consiglio su DBMS multipiattaforma stand-alone
Inserito da: nomorelogic - Giugno 17, 2019, 06:00:53 pm
visto che sei nella fase di prova volevo segnalarti questo link
https://wiki.lazarus.freepascal.org/ZMSQL

si tratta di un "DB" che memorizza i dati su file CSV e li gestisce con un TBufDataset dove è stato implementato un SQL abbastanza primitivo


PS:
l'ho provato ma non ci ho mai fatto una vera applicazione
Titolo: Re:Consiglio su DBMS multipiattaforma stand-alone
Inserito da: xinyiman - Giugno 17, 2019, 06:04:22 pm
visto che sei nella fase di prova volevo segnalarti questo link
https://wiki.lazarus.freepascal.org/ZMSQL

si tratta di un "DB" che memorizza i dati su file CSV e li gestisce con un TBufDataset dove è stato implementato un SQL abbastanza primitivo


PS:
l'ho provato ma non ci ho mai fatto una vera applicazione
Tempo fa me ne interessai, sai se è mantenuto oppure è un progetto abbandonato?
Titolo: Re:Consiglio su DBMS multipiattaforma stand-alone
Inserito da: nomorelogic - Giugno 17, 2019, 06:33:32 pm
https://sourceforge.net/p/lazarus-ccr/svn/HEAD/tree/

qualcuno a marzo ha fatto una fix per lazarus 1.8.4 (quindi credo per FPC 3.0.x)
Titolo: Re:Consiglio su DBMS multipiattaforma stand-alone
Inserito da: SB - Giugno 17, 2019, 06:43:27 pm
Valuterò anche questo. Grazie
Titolo: Re:Consiglio su DBMS multipiattaforma stand-alone
Inserito da: xinyiman - Giugno 17, 2019, 06:59:23 pm
https://sourceforge.net/p/lazarus-ccr/svn/HEAD/tree/

qualcuno a marzo ha fatto una fix per lazarus 1.8.4 (quindi credo per FPC 3.0.x)
Capito grazie mille  ;)
Titolo: Re:Consiglio su DBMS multipiattaforma stand-alone
Inserito da: Stilgar - Giugno 18, 2019, 11:15:35 am
Ora mi uccidono ....MariaDb?Non lo hai considerato?


Titolo: Re:Consiglio su DBMS multipiattaforma stand-alone
Inserito da: SB - Giugno 19, 2019, 07:49:29 am
Mi era passato per la testa, ma avevo trovato commenti nei forum che ne sconsigliavano l'utilizzo.
Purtroppo sembra che la versione embedded non sia più distribuita. Probabilmente è troppo oneroso adattare il sistema client/server

Titolo: Re:Consiglio su DBMS multipiattaforma stand-alone
Inserito da: Avogadro - Giugno 25, 2019, 04:23:55 am
Perdonate, perchè non usare PostgreSQL?

Dice wikipedia: "PostgreSQL è una reale alternativa sia rispetto ad altri prodotti liberi come MySQL, Firebird SQL e MaxDB che a quelli a codice chiuso come Oracle, IBM Informix o DB2 ed offre caratteristiche uniche nel suo genere che lo pongono per alcuni aspetti all'avanguardia nel settore dei database."

Tra l'atro è anche presente da sempre nell' IDE di Lazarus.

Titolo: Re:Consiglio su DBMS multipiattaforma stand-alone
Inserito da: nomorelogic - Giugno 25, 2019, 11:22:25 am
Credo che il problema sia che PostgreSQL non ha una versione embedded
Titolo: Re:Consiglio su DBMS multipiattaforma stand-alone
Inserito da: Avogadro - Giugno 25, 2019, 09:58:56 pm
Non mi sono mai cimentato con PostgreSQL, quindi ovvimente parlo da profano ma uso un' applicazione scientifica abbastanza complessa , ovviamente comprata,  che si poggia proprio  su questo db, non devo configuare nulla, il progamma "gira" e  il data base sottostante nemmeno "si vede", mi si passi il termine .


Titolo: Re:Consiglio su DBMS multipiattaforma stand-alone
Inserito da: SB - Giugno 26, 2019, 06:33:49 am
Di PostgreSQL se ne parla bene anche se è poco conosciuto (o forse se ne parla bene perchè è poco conosciuto  :-\ )
Purtroppo, che io sappia, non ha una versione embedded e quindi per le mie esigenze l'ho dovuto scartare a priori.

Sto provando l'accoppiata Zeos/SQLite per una applicazione web e sembra rispondere abbastanza bene. Non l'ho ancora testato a fondo e sotto carico.
Titolo: Re:Consiglio su DBMS multipiattaforma stand-alone
Inserito da: Avogadro - Giugno 26, 2019, 04:58:12 pm
L'accoppiata Zeos/SQLite, mi si passi il termine,  la sto usando da qualche tempo per dei sw di office automation e finora non mi ha mai dato problemi -  in passato avevo fatto delle prove con i file dbf  ma c'era un problema di lentezza esasperante quando i dati erano tanti - .

Il bello è la "portabilità: si mettono dati ed eseguibile su una pennetta usb e  tutto girà su qualsiasi pc.


Titolo: Re:Consiglio su DBMS multipiattaforma stand-alone
Inserito da: Avogadro - Giugno 26, 2019, 11:16:36 pm
Un'alternativa è usare i file .dbf, sono implementati su lazarus* e l'applicativo  non necessita di procedure di installazione fuori dall'ordinario .

Purtuttavia la semplicità d'uso poi va cozzare con la velocità: quando il numero di record supera le migliaia le performances crollano e se poi lì'applicativo deve girare in un ambiente condiviso le cose non migliorano.

Ho provato ad usare i file di acces  ma da una certa versione di lazarus in poi, ora non ricordo quale,  la connessione non funzionava piu' anche se mi pare che le ultime versioni abbiamo sanato questo problema.
 



*
https://wiki.freepascal.org/Lazarus_Tdbf_Tutorial
Titolo: Re:Consiglio su DBMS multipiattaforma stand-alone
Inserito da: xinyiman - Giugno 27, 2019, 08:15:33 am
Un'alternativa è usare i file .dbf, sono implementati su lazarus* e l'applicativo  non necessita di procedure di installazione fuori dall'ordinario .

Purtuttavia la semplicità d'uso poi va cozzare con la velocità: quando il numero di record supera le migliaia le performances crollano e se poi lì'applicativo deve girare in un ambiente condiviso le cose non migliorano.

Ho provato ad usare i file di acces  ma da una certa versione di lazarus in poi, ora non ricordo quale,  la connessione non funzionava piu' anche se mi pare che le ultime versioni abbiamo sanato questo problema.
 



*
https://wiki.freepascal.org/Lazarus_Tdbf_Tutorial

Sconsiglio l'uso dei DBF per una questione di semplicità d'implementazione, è molto più semplice da implementare e mantenere l'uso di un qualsiasi DBMS.

Sconsiglio access per questione di portabilità sui vari sistemi operativi.
Mi sa che per le necessità elencate possano andare bene solo SQLite e Firebird.