Интерес к масштабируемости означает, что вы должны внимательно рассмотреть сценарий использования в проекте. Существует несколько переменных, которые необходимо учитывать для масштабируемого развертывания NonSQL, которое охватывает, является ли базовая реализация на основе ключей или ориентированная на документы. Вот краткий список:
Аспекты, которые необходимо принять во внимание:
-Частота записи по сравнению с операциями чтения
- Необходим для анализа данных
- избыточность данных для высокой доступности
- репликация / синхронизация данных
-Нужно много переходных данных
- размер данных
- готов к облачности
Некоторые реализации NonSQL поддерживают эти аспекты лучше по отдельности, чем другие.
Сценарии:
- часто записываемые, редко читаемые данные, такие как счетчики посещений сети, или данные с регистрирующих устройств: Redis | MongoDB
-Часто читаемые, редко записываемые / обновляемые: Memcached для временного кэширования данных, Cassandra | HBase для поиска и Hadoop и Hive для анализа данных
- Приложения высокой доступности, требующие минимального времени простоя, хорошо работают с кластерными избыточными хранилищами данных: Riak | Cassandra
- синхронизация данных в нескольких местах: CouchDB
-Временные данные (веб-сеансы и кэши) хорошо работают в хранилищах временных данных: Memcached
-Большие данные, полученные из бизнес-аналитики или веб-аналитики, которые могут не соответствовать какой-либо очевидной схеме: Hadoop
Вывод:
ИМХО, вам следует сосредоточиться на проблеме выбора масштабируемого хранилища данных, начиная со сценария использования, а не на основных аспектах и различиях между ними.
Я также рекомендую вам проверить Couchbase , которая является хорошей комбинацией двух миров: основанных на ключах и ориентированных на документы.