Ho visto alcune idee su questo come invece di creare, aggiornare, inserire, eliminare (CRUD) utilizzare Get and Put. Quello è buono. Tuttavia, non ho ancora visto molto su come affrontare la complessità. Mi è stato detto, "basta scrivere un metodo per ogni tipo di query di cui hai bisogno".Esistono modelli di progettazione del livello dati NOSQL?
La maggior parte di NOSQL mi sembra a posto finchè non comincio a pensare ai qualificatori (una clausola where) - potrebbero esserci così tante varianti. Esiste già un buon schema per implementare i qualificatori in modo ragionevole, usando solo i nomi dei metodi & argomenti convenzionali? Forse c'è un qualche tipo di schema verbale/sostantivo che funziona bene, ma che non è un linguaggio a sé stante.
Non rispondo alla risposta "giusta" ... spero che ci siano alcune scuole di pensiero da cui ho potuto imparare.
trovato questo post del blog dal creatore di RavenDB: http://ayende.com/blog/4562/ravendb-index-management
Possiamo implementare più di un indice su una classe?
Ho anche scoperto che potrebbe essere possibile serializzare i delegati anonimi http://blogs.microsoft.co.il/blogs/aviwortzel/archive/2008/06/20/how-to-serialize-anonymous-delegates.aspx Suppongo che se è possibile, che potrebbero usare qualcosa di simile.
Ma cosa succede se non abbiamo accesso allo stesso assembly (ad esempio Silverlight). Trovato questo post qui: http://ayende.com/blog/4766/accessing-ravendb-from-silverlight
L'oggetto IEnumerable<T>
è ricercato sul lato client o sul lato server? Quanto è specifico ottenere il lato server in NOSQL nel restringere il set di risultati prima di inviarlo via cavo, senza bloccarlo a un unico ID?
AGGIORNAMENTO: Ho finito con l'invio di email a Ayende da RavenDB. Ha risposto gentilmente alle domande che ho avuto (in basso):
Che cosa si può fare è scrivere:
public IEnumerable<T> FindAll(Expression<Func<T,bool>> whereClause)
{
return session.Query<T>().Where(whereClause).ToList();
}
Questo utilizza LINQ per capire il vostro intento, e poi invia la query al server usando la sintassi di RavenDB. Sul server, analizziamo la tua query, e Query Optimizer controlla se esiste un indice esistente in grado di rispondere a questa query e, in caso contrario, creerà per te un indice temporaneo.
Se si esegue una query sufficiente dell'indice temporaneo, RavenDB lo renderà permanente. Così, auto-ottimizzando le proprie operazioni.
Sei arrivato molto lontano con il caso d'uso "da Silverlight"?
Supportiamo pienamente Silverlight.
RavenDB può gestire più di un server di indicizzazione?
Sì. In effetti, abbiamo alcuni clienti che hanno> 500 indici in esecuzione senza problemi.
FINE DI INFORMAZIONI DA Ayende a RavenDB
sulla progettazione di un linguaggio di interrogazione (cioè FindAll/dove/delegato), Mongo sembrano ottenere un po 'di questa via JSON ... http://www.mongodb.org/display/DOCS/Indexes Vorrei sapere di più a proposito.
Questo sembra più vicino: http://www.mongodb.org/display/DOCS/MapReduce
Un filo interessante sulla serializzazione Serializing anonymous delegates in C#. Non è direttamente rilevante ... ma sto solo cercando di guardare sotto il cofano un po 'così so di più sui potenziali.
Domanda pertinente [Architetture di accesso ai dati con DB Raven] (http://stackoverflow.com/questions/5909400/data-access-architectures-with-raven-db) – oleksii
@olesii. Grazie. Ho dato un'occhiata. Sembra che abbiano riscontrato problemi simili. FindAll cosa? Come puoi implorare qualificatori? Posso vedere come il caching o gli scenari basati sull'iscrizione funzionerebbero bene, ma non tutto ciò che è più complicato di così. Sono curioso. – sgtz
Ho postato una risposta. Con il repository corrente sono in grado di fare 'Find', che può restituire tutti i record se necessario. Ma ... non sono sicuro che questo sia il modo corretto. Le persone hanno il diritto di dire che ho assolutamente torto qui. Non sono riuscito a trovare una soluzione migliore però. – oleksii