В последние недели я имел дело с тем же вопросом;Вот мои наблюдения:
- SQL Server работает, но плохо масштабируется.Мы протестировали базу данных SQL Server, содержащую примерно 600 ГБ документов, и, скажем так, дела идут очень медленно.
- Более или менее то же самое верно для MySQL ... оба на самом деле не созданы для документов ...
- Hadoop / HDFS не выглядит зрелым в Windows.Хотя у Microsoft есть доступная реализация HDFS, она все еще находится в фазе RC.Положительным моментом является то, что если вы разрабатываете на будущее (скажем, 1 год до производства), это, кажется, хороший выбор.
- Apache Cassandra кажется зрелым.На положительном, реализация очень проста;то есть: это в основном просто распределенное хранилище значений ключа с одним разделителем, где и ключ, и значение являются байтом [].Тем не менее, простота реализации также означает, что вам нужно обойти все виды проблем.Если вы работали с ним, вы знаете, что это замечательно, если вам нужно реализовать Twitter, но слишком просто для всего остального.Он хорошо масштабируется, но, честно говоря, я не слишком впечатлен производительностью.Кроме того, я столкнулся с парой несоответствий / искажений данных, которые не очень греют мое сердце ... Если вы используете Cassandra, я бы лично использовал Aquiles в качестве клиента (потому что вы легко столкнетесь с вещами низкого уровня)- но FluentCassandra тоже хороший клиент.
- MongoDB также вполне зрелый.С другой стороны, он активен и имеет очень хорошую и простую в использовании (в отличие от Cassandra) клиентскую библиотеку C #.Кроме того, хотя на моем кластере несколько раз произошел сбой сервера shard, восстановление всегда выполнялось (и я не слишком вежлив с перезапусками :-), и все проблемы, с которыми я столкнулся, похоже, уже решены в ветви разработки -так что я не чувствую себя неловко по этому поводу.Самое важное, что есть в MongoDB и в Cassandra, - это поддержка вторичных индексов.
Все эти решения основаны на диске (например, постоянство на диске).
Я посмотрел код3-5 и реализовал свое собственное NoSQL-решение в прошлом (около 6 лет назад), которое мы использовали для хранения данных в последние годы.Если честно, MongoDB - это то, как я бы сам это реализовал.
Для полноты: единственное, что я еще не попробовал, это CouchDB ... но, честно говоря, я так счастлив с MongoDB, что даже не буду беспокоиться.
-Stefan.