Chiave del database coppia di valori in .Net
Domanda
Ho un problema di progettazione di database, in cui le proprietà dell'oggetto di database non sono fissi. E l'utente dell'applicazione bisogno di avere la possibilità di aggiungere propery all'oggetto in qualsiasi momento.
Dal momento che questo non può essere implementato in progettazione di database tradizionale con numero fisso di colonne, Sto pensando di utilizzare il valore coppia di design pattern chiave E io sono alla ricerca di modi per implementare in C # (. Net).
Io preferisco usare MySQL come database di backend.
Q1. Qual è il modo migliore per serializzare oggetto e conservare in database mysql? (XML o JSON o binario?)
Q2. C'è qualche coppia di valori chiave motore di database, con robuste .Net Associazioni?
Soluzione
La serializzazione aggiungerà un sovraccarico di prestazioni per la vostra applicazione, ma se si va per che poi userei la serializzazione binaria in quanto è il più veloce. Date un'occhiata a protobuf-net per la serializzazione.
Altri suggerimenti
Se non avete bisogno di interrogare / relazione su queste proprietà, vorrei suggerire il risparmio come XML, serializzazione gli oggetti con un certo tipo di accoppiamento lasco che sogliono errore se le proprietà vengono aggiunti o rimossi. JSON può essere gestito dall'applicazione quando serve il contenuto.
Se si richiede l'esecuzione di query / reporting con altri campi di database, vorrei suggerire a venire con qualche tipo di schema del database che può memorizzare i dati.
Per quanto ne so, MySQL ha il supporto per i campi XML. Non sono sicuro se è in grado di indicizzare loro però.
Basta serializzare l'oggetto in XML con XmlSerializer e poi uno sguardo alle MySQL .
In risposta alla Q2:
negozi Apache CouchDB JSON.
Ecco una guida introduttiva per C #: http://wiki.apache.org/ CouchDB / Getting_started_with_C% 23
La banca dati ha un'interfaccia RESTful, che lo rende facile da usare da qualsiasi lingua.
Sei certo bisogno di database relazionale? Per le mie esigenze, il db4objects è sufficiente