Come scegliere la versione leggera del sistema di database

Sto iniziando un progetto POS (Point of sale). Il sistema di targeting verrà scritto in C # .NET 2 WinForms e come server di database principale. Useremo MS-SQL Server. Dato che abbiamo un sacco di dispositivi POS in catena per un negozio, mi piacerebbe avere il back-end del sistema di base dati locale su ogni dispositivo POS.

Gli scenari sono i seguenti: Quando il server principale si interrompe !! L’applicazione POS dovrebbe continuare a funzionare “offline” con il database locale, fino a quando la connessione al server principale non si ripresenta.

Ora sono in dilemma quale database locale sarà più adatto per me. Ecco alcune note per aiutarmi a indicarmi la giusta direzione:

  1. Per essere leggeri “I miei dispositivi POS sono di solito vecchi e sofferenti con spettacoli”
  2. Per essere liberi “Ho molti dispositivi e non ho costi aggiuntivi a parte il serer SQL principale”
  3. Un giorno mi piacerebbe provare tutto quel port su Mono e Linux OS.

Ecco cosa ho cercato finora:

  1. XML semplice “Leggero ma ho paura delle prestazioni, la mia tabella principale di elementi è la media di 10.000 record”
  2. SQL-Express “Temo che i miei dispositivi POS siano scarsi con l’hardware per SQLExpress e che sia anche difficile da installare su ciascun dispositivo e configurare”
  3. Meno noto Advantage Database Server ha distribuzione gratuita del sistema ADT offline.
  4. DBF con libreria estesa, “Rispetto per i buoni vecchi DBF, ma quell’era è dietro a Me con clipper e DBF”
  5. Accesso MS
  6. Sqlite “Per lo più mi piace per ora, ma temo che accoppiato con MS SQL abbia gli stessi tipi di dati”.

So che in questo SO c’è un sacco di dati soggettivi, ma almeno qualcuno può raccomandare qualche altro sistema di database, o cose che ho fatto più attenzione prima di scegliere il database.

SQL Server Compact

È progettato per dispositivi embedded (ad es. Windows Mobile), ma può anche funzionare su PC. È 2 MB, esegue in-process, un singolo file di database, che può avere qualunque nome tu voglia.

È pensato come database locale ad alte prestazioni. Non è ansible connettersi da remoto e non supporta le stored procedure o le funzioni definite dall’utente.


Ma per rispondere alla tua domanda attuale: come scegliere?

Scegli quali sono gli strumenti di gestione, con un percorso di aggiornamento facile e compatibile quando non sei all’altezza.

Sto facendo più o meno la stessa cosa: il server centrale probabilmente esegue server MS SQL e sistemi distribuiti sebbene questi stiano usando Linux. Abbiamo optato per il trasferimento dei dati in XML e utilizzare sqlite sui sistemi distribuiti.

È ancora presto, ma sembra che stia andando bene finora.

Ci sono legami .net per sqlite.

Il motivo per cui abbiamo scelto sqlite sono stati:

  1. perché non ha bisogno di alcuna gestione del database, il che sarebbe complicato per i sistemi remoti.
  2. Sembra molto usato: ad esempio firefox usa sqlite per l’archiviazione locale.
  3. Possiamo usarlo su Windows e Linux.
  4. Dovrebbe essere bravo a non perdere dati se c’è un’interruzione di energia inaspettata.

Suggerirei Sql Compact Edition in quanto è leggero e gratuito, quindi risolve due dei tuoi tre problemi. Non ho idea se funzioni su Mono …..

L’ho usato in passato e sono rimasto davvero impressionato dalla performance. L’unico grande inconveniente è la mancanza di stored procedure …

Uso System.Data.Sqlite, che è un wrapper ADO.Net open source su Sqlite da http://sqlite.phxsoftware.com/ . È ansible utilizzarlo da Visual Studio per creare database. Supporta un sottoinsieme dei tipi di campo di Sql Server e la scrittura di una class di interfaccia tra i due database dovrebbe essere immediata. E ottieni i vantaggi della semplice implementazione includendo una singola DLL nel progetto e un database a file singolo. E include anche la crittografia.