2009-05-29 20 views
10

Un file di database di sistema è un file system che è un database, invece di una gerarchia. Inizialmente un'idea non troppo complessa, ma ho pensato di chiedere se qualcuno ha pensato a come potrebbero fare qualcosa del genere? Quali sono i problemi che è probabile che manchi un piano semplice? La mia prima risposta ad un'implementazione sarebbe qualcosa di simile a un file system per una piattaforma Linux (probabilmente in cima ad un file system esistente), ma io davvero non so molto su come dovrebbe essere avviato. È un pensiero passivo che dubito di aver mai seguito, ma spero di soddisfare almeno la mia curiosità.Come si costruisce un file system di database (DBFS)?

+0

Ho alcune idee, ma preferirei discuterle offline. Sei ancora interessato? – Ries

+2

Mentre continuo a pensare che l'idea sia importante, mi sono spostato su un grande progetto in cui ho già nascosto il file system all'utente, quindi il problema dei meta-dati dei file non è visibile a loro. Non è una soluzione formidabile (non funziona bene con gli strumenti) ma è migliore del sistema operativo ostile dell'utente. Non ho davvero il tempo di investire in un progetto del genere, quindi non sarò di alcun aiuto reale. Detto questo, sono entusiasta di vedere cosa ne pensi, quindi facci sapere qui! – Dave

+0

Sono sorpreso che questa non-cento-uno-cento-una-domanda ambigua non è stata ancora chiusa. – puk

risposta

1

Il modo più semplice sarebbe crearlo utilizzando fuse, con un back-end del database.

Una cosa più difficile da fare è averlo come modulo del kernel (VFS).

Su Windows, è possibile utilizzare IFS.

0

Forse this è un buon punto di partenza per avere un'idea di come potrebbe funzionare.

È un basic overview dell'architettura Firebird.

Firebird è un RDBMS opensource, quindi, se sei interessato, puoi avere anche una visione profonda.

1

Non sono proprio sicuro di cosa intenda con "Un file system di database è un file system che è un database anziché una gerarchia".

Probabilmente, utilizzando "Filesystem in Userspace" (FUSE), come menzionato da Osama ALASSIRY, è una buona idea. Il FUSE wiki lists a lot of existing projects sui file system databased-backed così come i file system in cui è possibile cercare da query SQL-like.

5

DBFS è un'implementazione PoC davvero piacevole per KDE. Invece di implementare come file system direttamente, si basa su indicizzazione su un file system tradizionale, e la costruzione di una nuova interfaccia utente per rendere i risultati accessibili agli utenti.

+0

Non l'avevo visto. Molto interessante! – Dave

+0

Sì. Lo sto usando come riferimento per DBFS che sto costruendo in Windows. –

0

suo stato un po 'che lei ha chiesto questo. Sono sorpreso che nessuno abbia suggerito l'ovvio. Guarda mainframe e minis, specialmente iSeries-OS (ora chiamato IBM-i si chiamava iOS o OS/400).

Come fare un database relazionale come archivio di dati di massa è relativamente facile. Entrambi hanno Oracle e MySQL. Il problema è che deve essere essenzialmente onnipresente per le applicazioni degli utenti finali.

Quindi i passaggi per una conversione di app sono:

1) Tutto in un normale file system gerarchico

2) I dati BLOB con i metadati luce nel database. File con alcune informazioni di catalogo.

3) Grandi dati in BLOB con metadati estesi e strutture complesse nel database. File con relativi metadati associati che possono essere essenzialmente alla comprensione della struttura.

4) Strutture interne del BLOB esposte in un oggetto < -> Mappa relazionale con estesi metadati. Sebbene possa esserci una forma esportabile, l'applicazione funziona naturalmente con il database, la nozione del file man mano che il repository viene perso.

0

Se si utilizza Python poi dare un'occhiata al Transactional Storage System di SpiderOak:

Un accessibile API filesystem python che supporta file di più tipico operazioni (le directory, cartelle, la creazione di file, leggere, scrivere, seeking, rinominando , ecc.) con tolleranza agli errori transazionali. È possibile aprire il filesystem, eseguire un numero qualsiasi di modifiche e quindi eseguire il commit o il rollback di tutte le modifiche atomicamente. Questo ci consente di creare SpiderOak utilizzando oggetti di file semplici e tradizionali come contenitori. Utilizza SQLite internamente come sistema di archiviazione e quindi mantiene l'intero file system all'interno di un singolo file su disco. È multiprocesso e thread-safe.

Problemi correlati