Domanda

Ho scritto un'applicazione desktop di Windows che funziona con Sqlite molto bene. E 'stata una singola applicazione utente, e il database si trova proprio sulla macchina in cui l'app funziona.

Tuttavia, l'applicazione è cresciuta, e ora più utenti dovrebbero essere in grado di eseguire l'applicazione e connettersi a un database condiviso.

Mi piacerebbe essere solo in grado di condividere il file SQLite su un'unità di rete, ma che sarebbe ovviamente causare i dati danneggiati a meno che qualcuno ha qualche idea.

Credo che avrei potuto richiedere l'installazione di un server di database, ma una licenza commerciale di MySQL non ha senso, PostgreSQL è abbastanza diverso che avrei dovuto riscrivere un sacco della mia applicazione. Non ho lavorato con Firebird a tutti, quindi non sono sicuro se questo è una buona soluzione oppure no.

Ci sono i server database SQLite che possono essere installati che gestiscono le transazioni in entrata sul file di database SQLite?

Se ho bisogno il cliente per scaricare e installare MySQL per conto loro, devo avere una licenza commerciale?

Tutti i suggerimenti o direttive sarebbe grande, grazie.

È stato utile?

Soluzione

Ci sono i server SQLite che rendono possibile l'uso di SQLite in un ambiente multi-utente. Leggi qui: http://www.sqlite.org/cvstrac/wiki?p=SqliteNetwork . Non so come queste soluzioni eseguono e la scala.

Altri suggerimenti

Si può essere in grado di utilizzare il file di Sqlite su un'unità di rete condivisa come lei ha descritto, a seconda del file system sottostante:

http://www.sqlite.org/faq.html#q5

  

Più processi possono avere lo stesso   database aperto allo stesso tempo.   processi multipli possono essere facendo un   SELEZIONA allo stesso tempo. Ma solo una   processo può essere apportando modifiche al   banca dati in qualsiasi momento nel tempo,   tuttavia.

     

SQLite utilizza serrature lettore / scrittore di   controllare l'accesso al database. (Sotto   Win95 / 98 / ME, che manca il supporto per   lettore / scrittore serrature, una probabilistica   simulazione viene utilizzato al posto.) ma l'uso   attenzione: questo meccanismo potrebbe bloccaggio   non funzionare correttamente se il database   file viene conservato su un file system NFS.   Questo perché fcntl) il blocco dei file (   è rotto su molte implementazioni NFS.   Si dovrebbe evitare di mettere SQLite   file di database su NFS se multipla   processi potrebbero tentare di accedere al file   allo stesso tempo. Su Windows,   la documentazione di Microsoft afferma che   bloccaggio potrebbe non funzionare in FAT   filesystem se non si esegue la   daemon Share.exe. Le persone che hanno un   molta esperienza con Windows dimmi   che il blocco dei file di file di rete è   molto buggy e non è affidabile. Se   quello che dicono è vero, la condivisione di un   database SQLite tra due o più   macchine Windows possono causare   problemi imprevisti.

SQL Server Express , e 'gratuita e deve smettere di dover riscrivere la maggior parte del codice,

Credo che Firebird può essere una scelta molto buona

  • È gratis
  • versione embedded esistere

Non so il motivo per cui si assume che il file di dati verrà danneggiato se lo metti su un'unità di rete e lasciare più istanze di l'accesso applicazione allo stesso tempo. Se non principalmente la lettura, si dovrebbe essere a posto. Se si fanno un sacco di scrive, si avrà probabilmente subire un calo di prestazioni, dal momento che una sola istanza può scrivere allo stesso tempo. (Vedere http://www.sqlite.org/faq.html )

Se si fanno un sacco di scrive, probabilmente avrete bisogno di un'installazione server autonomo - avete considerato MS SQL Server Express? Dovrebbe essere facile e semplice per ottenere installato e funzionante.

Troppo tardi lo so, ma nessuno di questi giorni dovrebbe avere la necessità di scrivere un'applicazione senza un quadro che offre astrazione del database.

Personalmente io uso web2py che è un framework web basato su Python. Di default utilizza SQLite che è grande per le singole applicazioni utente sul desktop locale o di piccole e medie applicazioni sulla rete locale che sono principalmente le operazioni di lettura. Tuttavia, se ho deciso di aumentare la portata di utilizzo app, vorrei semplicemente modificare la stringa di connessione nel modal database da utilizzare un altro database. Web2py o qualsiasi altro contesto vale la pena utilizzare sarebbe semplicemente riscrivere le istruzioni SQL per soddisfare i nuovi requisiti.

utilizzare questo codice sul tuo stringa di connessione dopo che più utenti possono inserire, eliminare, selezionare e.t.c. nel database senza alcun problema.

SQLiteConnection con = new SQLiteConnection ( "Data Source = D: \ yourdatabase.db; Count Modifiche = off; Modalità ufficiale = off; Pooling = true; dimensione della cache = 10000; Formato pagina = 4096; sincrono = off");

  

Se ho bisogno il cliente per scaricare e installare MySQL per conto loro, devo avere una licenza commerciale?

No.

Il valore di una licenza commerciale di MySQL è che permette di distribuire MySQL standard o una MySQL modificato in forma binaria senza l'oblihation a distribuire anche il codice sorgente. Si dà anche accesso al sostegno.

Tuttavia, se l'utente ottiene MySQL se stessi da parte di Oracle, i luoghi GPL senza obblighi su di voi per fornire loro il codice sorgente di MySQL. Si può ottenere da Oracle. In effetti, Oracle ha l'obbligo di fornire, a condizione che distribuiscono sotto la licenza GPL.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top