Различните NoSQL решения решават различни проблеми за различни приложения - така че първо най-доброто нещо, което трябва да направите, е да разгледате проблема си и да го разбиете на части
- Пишете много за съхранение, следователно скоростта на запис е важна за вас
- Искате да извършвате операции за агрегиране на тези данни и резултатите от тях да могат лесно да се правят заявки
- Скоростта на четене не е толкова важна от гледна точка на нещата, поне не по начин „уеб приложението трябва да е наистина отзивчиво за милиони хора“
- Не знам дали имате нужда от динамични заявки или не
Нека да разгледаме Couch, Mongo и Raven на много високо ниво, обобщен начин
Гарвана
- Бързо писане
- Бързи заявки (евентуално последователни, предварително изчислени, агрегиране чрез map/reduce)
- Възможни са динамични заявки, но не са наистина подходящи за вашия случай на употреба, тъй като най-вероятно ще правите заявки по дата и т.н.
Монго
- Заслепяващо бързо записване (според мен опасно, тъй като спирането на захранването означава загуба на данни;-))
- Бавно четене (сравнително), агрегиране чрез map/reduce, не е предварително изчислено
- Динамичните заявки са точно това, което_вие_правите, но вероятно трябва да дефинирате индекси на вашите колони, ако искате някаква производителност на този вид данни
Дивана
- Бързо писане
- Бързо четене (предварително изчислено, но актуализирано само когато четете (IIRC)
- Динамичните заявки не са възможни, всички са предварително дефинирани чрез функции за карта или карта/намаляване
И така, основно - имате ли нужда от динамични заявки за този вид данни? Скоростта на четене невероятно важна ли е за вас? Ако имате нужда от динамични заявки, тогава ще искате Raven или Mongo (за такива неща Couch вероятно не е това, което търсите така или иначе).
FWIW, според мен единственият случай на използване на Mongo Е за регистриране, така че може да имате отговор там.