Domanda

Mi piacerebbe vedere alcuni esempi di database di file flat semplici e come vi si accede attraverso uno strato di dati. Ho scritti e letti da un file flat prima, ma non ho mai creato un layer di dati che accede ai dati per un'applicazione che utilizza i file di testo.

Se possibile, sarebbe bello vedere un tutorial che aveva uno strato di dati che utilizzava un semplice database di file flat personalizzato,. Un esempio che salva gli oggetti di business personalizzati in XML e quindi carica di loro sarebbe bello perché XML è così popolare e facile da lavorare.

Vorrei anche grato per qualsiasi link a siti web che discutere le migliori pratiche per quanto riguarda la progettazione di basi di dati di file flat, ecc.

Il mio obiettivo è quello di avere una soluzione per la memorizzazione di dati semplici sulla macchina di un utente e li hanno non hanno bisogno di alcun software speciale installato (come SQL Server, ecc) al fine di recuperare i dati da cui è memorizzato.

So che questa è una domanda molto generale, ma qualche consiglio che mi può puntare nella giusta direzione è benvenuto.

È stato utile?

Soluzione

Si può avere ottenuto le definizioni di un po 'confuso, comprensibile a causa del gran numero di tecnologie simili in tutto oggi.

XML non è un piatta (o database di file flat), ma da leggendo il tuo obiettivo che suona come quello che si vuole veramente è un database relazionale autonomo, piuttosto che un vero e proprio file flat.

Come altri, posso raccomandare vivamente SQLite per questo scopo. Ci sono associazioni per varie piattaforme, NET ha System.Data.SQLite che, in un unico file, è al tempo stesso il provider di database e motore.

I 2 grandi vantaggi di utilizzare SQLite sono che il database attuale è completamente autonomo in un singolo file controllato dall'applicazione, e che supporta DDL standard SQL e comandi DML (ad esempio SELECT, INSERT, UPDATE, DELETE, CREATE DATABASE / TABLE ecc).

Per una singola applicazione utente SQLite è un eccellente (uno dei migliori) modi per memorizzare sia i dati delle applicazioni e delle impostazioni. Di recente ci è stato discsussion che può anche supportare più piccola scala applicazioni multiutente.

Tuttavia Oracle, MySQL, SQL Server ecc sono ancora decisamente preferito per le applicazioni multi-utente (applicazioni anche su piccola scala) se avete la possibilità di accedere / utilizzare un server di database.

Inoltre, non dimenticare che la scelta della base di dati non si escludono a vicenda.

Si può avere un'applicazione multi-utente, con una ricca interfaccia utente client installato su molti computer degli utenti. La banca dati centrale qui in realtà dovrebbe essere un db multiutente come MySQL. Ma all'interno della ricca interfaccia utente client, SQLite è l'ideale per memorizzare tutte le impostazioni degli utenti, o forse per fornire supporto off-line quando il database non può essere raggiunto.

Altri suggerimenti

biggy è quella che ho usato in passato. Si salva come JSON in flatfiles e lo si può trovare su Github

CSV , INI , XML può essere utilizzato per memorizzare i dati strutturati, ma IMO non sono flessibili o efficace da usare come basi di dati.

SQLite come un'ottima alternativa. E 'molto potente, leggero e autonomo motore di database.

Si può avere la botte piena e la moglie ubriaca:

SQLite è un database SQL che è costituito da un unico file e non richiede installazione, è binding per molte lingue e viene eseguito in varie piattaforme.

Non è necessario nel caso in cui si parla di scrivere il proprio livello di dati sulla parte superiore del file flat. In realtà, a meno che non si desidera un'esercitazione di apprendimento, vorrei consigliare contro di farlo.

Ci sono diversi database embedded disponibili che l'utente non dovrà preoccuparsi affatto.

SqlLite è comune, popolare, cross platform, ecc Dipende dalla vostra linguaggio di implementazione. Se si utilizza Java, ci sono diversi, Derby per esempio. .NET non è il mio ballywick, ma immagino che ci sia qualcosa là. Come minimo, MS ha un liberamente utilizzabile desktop, motore SQL incorporabile è possibile utilizzare.

scrivere il proprio può essere un esercizio interessante, ma che la ruota è stato fatto, ed è semplicemente più facile e più efficiente per utilizzare un database esistente di ripartire da zero. Gli utenti non saranno influenzati affatto da questo, quindi se questo è un driver primario, alcun motivo per non utilizzare un prodotto / progetto disponibili.

C'è la DBD :: CSV modulo Perl in grado di caricare i file CSV e seguendo le istruzioni SQL. Ma per il tuo obiettivo penso che sarebbe meglio indagare SQLite che è un database relazionale adeguata che funziona senza un server.

Invece di reinventare basi di dati, perché non impacchettare l'applicazione con un semplice motore di database? Basi di dati è disponibile in molti formati, non tutti sono enormi: -)

Se si vuole reinventare la ruota, guardando il codice sorgente di semplici motori di database open source dovrebbe puntare nella giusta direzione.

Sono d'accordo con i molti commenti che suggeriscono che è meglio utilizzare un motore di database esistente. Tuttavia, come un tentativo di rispondere realmente alla domanda:

  • Un formato di database di file flat estremamente comune è Xbase (file in genere con .dbf estensioni). È possibile google per "Xbase" e "DBF" e trovare un sacco di informazioni e qualsiasi numero di driver. Si dovrebbe essere in grado di estrarre un bel paio di consigli e suggerimenti, se siete veramente interessati.
  • Se si vuole giocare con uno che è molto probabile che sul proprio sistema, è possibile utilizzare il "driver di testo di Microsoft" ODBC. Se avete una qualsiasi delle cose accesso ai dati di Microsoft sul vostro computer, si probabilmente tale driver. Non lo so per certo, ma è probabilmente installato con MDAC. Questo driver sarà leggere e scrivere separati da virgola file di testo (tra gli altri formati).
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top