Forskellige NoSQL-løsninger løser forskellige problemer til forskellige formål - så først og fremmest er den bedste ting at gøre at se på dit problem og nedbryde det
- Du skriver tungt til lagring, derfor er skrivehastighed vigtig for dig
- Du ønsker at udføre aggregeringshandlinger på disse data og have resultaterne af det, der let kan forespørges på
- Læsehastigheden er ikke så vigtig ud fra lyden af tingene, i hvert fald ikke i en "webapplikation skal være virkelig lydhør for millioner af mennesker" på en måde
- Jeg ved ikke, om du har brug for dynamiske forespørgsler eller ej
Lad os se på Couch, Mongo og Raven på en generaliseret måde på et meget højt niveau
Ravn
- Hurtig skrivning
- Hurtige forespørgsler (efterhånden konsistente, forudberegnet, aggregering via kort/reducer)
- Dynamiske forespørgsler er mulige, men ikke rigtigt passende til din brugssituation, da du højst sandsynligt kommer til at forespørge efter dato osv.
Mongo
- Blindende hurtig skriver (efter min mening farligt, fordi strømmen afbrydes betyder tab af data;-))
- Langsom læsning (relativt), aggregering via kort/reducer, ikke forudberegnet
- Dynamiske forespørgsler er bare hvad_du_gør, men du skal sandsynligvis definere indekser på dine kolonner, hvis du vil have nogen form for ydeevne på denne slags data
Sofa
- Hurtig skrivning
- Hurtig læsning (forudregnet, men kun opdateret, når du læser (IIRC)
- Dynamiske forespørgsler er ikke mulige, alle foruddefinerede via kort eller kort-/reducer-funktioner
Så dybest set - har du brug for dynamiske forespørgsler over denne slags data? Er læsehastigheden utrolig vigtig for dig? Hvis du har brug for dynamiske forespørgsler, så vil du have Raven eller Mongo (For denne slags ting er sofa nok alligevel ikke det, du leder efter).
FWIW, Mongos eneste use case efter min mening ER til logning, så du har måske et svar der.