Ciao a tutti.

Sto valutando la possibilità di utilizzare LiteDb per memorizzare dati binari (in combinazione con SQL server per gli altri tipi di dati).

http://www.litedb.org/

Quello che mi frena è che ho la sensazione che sia un progetto con il "respiro corto".

Ovvero mi sembra che non sia seguitissimo e non vorrei investire in un database che verrà presto abbandonato.

Mi piacerebbe uno scambio di opinioni con qualcuno che lo conosce e magari già lo utilizza.

Ringrazio anticipatamente per qualsiasi opinione al riguardo, anche su potenziali alternative.

Filippo
10.746 messaggi dal 09 febbraio 2002
Contributi
Ciao Filippo,


utilizzare LiteDb per memorizzare dati binari (in combinazione con SQL server per gli altri tipi di dati).

Spiega un po' meglio lo scenario. In particolare, come mai pensi che SQL Server non sia adeguato per memorizzare dati binari?
Se hai grossi file, potresti usare tabelle FILESTREAM che si integrano con il file system. In pratica, ogni file che aggiungi alla tabella lo vedrai apparire fisicamente in una directory di Windows.
https://docs.microsoft.com/it-it/sql/relational-databases/blob/filestream-sql-server

ciao,
Moreno

Enjoy learning and just keep making
Ciao Moreno (grazie per la risposta).

Il presupposto è che io utilizzo (voglio utilizzare) SQL Server Express.

Se comincio a usare le tabelle FILESTREAM (o dati BLOB che dir si voglia) la versione EXPRESS supera in un attimo i 10 GB.

Da qui la mia idea... SQL EXPRESS tiene i dati in formato non blob ovvero contengo al massimo la crescita del database.

In un database LiteDb metto i dati BLOB dopodiche creo una tabella indice (In SQL Server) con un eseguibile in C# (o Python) gestisco la persistenza e "metto in comunicazione" i due database (e materializzo il file su disco).

Potrei anche usare Python per fare la stessa cosa senza nessun database di mezzo (!) ... ma questa è un altra storia.

Da non sottovalutare che LiteDb è ottimale perche con una DLL di pochi KB hai un database denormalizzato documentale (mongoDb similare) che gestisci con una facilità e semplicità imbarazzante (usando anche LINQ e le classi POCO).

Intendiamoci SQL Server è un database pazzesco (e chiamarlo database secondo me è molto riduttivo) ma l'idea di non appoggiarmi ad un unico "motore" per i dati ultimamente non mi dispiace per niente.

Filippo
10.746 messaggi dal 09 febbraio 2002
Contributi
Ciao Filippo,


Se comincio a usare le tabelle FILESTREAM (o dati BLOB che dir si voglia)

Non è la stessa cosa, fai ricerche su Filestream.
A proposito del limite, è scritto qui: https://docs.microsoft.com/en-us/sql/relational-databases/blob/filestream-compatibility-with-other-sql-server-features#SQLServerExpress

SQL Server Express supports FILESTREAM. The 10-GB database size limit does not include the FILESTREAM data container.


In alternativa a filestream, se non hai esigenze particolari, puoi salvare i file su una qualsiasi directory e memorizzare solo il percorso in Sql Server.


Potrei anche usare Python per fare la stessa cosa senza nessun database di mezzo (!)

Cioè?


l'idea di non appoggiarmi ad un unico "motore" per i dati ultimamente non mi dispiace per niente.

Nel momento in cui aggiungi un ulteriore componente, l'applicazione diventa più complessa e perciò meno manutenibile per definizione. Se aggiungi complessità volontariamente, è perché questa viene ripagata dai vantaggi che ne trai. Ad esempio, quando si decide di introdurre una seconda base dati è per ottimizzarla per la lettura, in modo che i tempi di caricamento delle pagine si riducano. Improvvisamente hai la complessità di tenere sincronizzato il modello della lettura con quello della scrittura, ma il vantaggio è che riesci ad accogliere un volume molto più grande di visite contemporanee al sito.

In questo caso non so che dirti. Tu conosci bene il tuo scenario, misura bene quali sono questi vantaggi di introdurre LiteDb, così potrai valutare se l'incremento di complessità è giustificato.

ciao,
Moreno

Enjoy learning and just keep making
Non è la stessa cosa, fai ricerche su Filestream

grazie per info (ero male informato)

In riferimento all' utilizzare Python per la persistenza di dati arbitrari senza usare un database qui (se ti interessa) puoi avere un primo livello di informazione.

https://docs.python.org/2/library/shelve.html
https://docs.python.it/html/lib/module-shelve.html

Per correttezza nulla che io abbia gia sperimentato.

Tutto da verificare però lo riterrei interessante, da approfondire visto che SQL Server adesso supporta (anche) python mi stanno venendo alcune idee per unire i 2 potenziali "strumenti".

[cut] misura bene quali sono questi vantaggi di introdurre LiteDb, così potrai valutare se l'incremento di complessità è giustificato.


Concordo pienamente guardarsi bene dall' introdurre inutili (e soprattutto non richieste) complessita.

Anche se è un pattern che a mio modo di vedere a volte deve essere "violato" per usare al meglio ambienti eterogenei ... ma credo sia un lungo discorso.

Ciao

Filippo

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.