Лучшие практики внедрения NoSql / Raven DB - PullRequest
12 голосов
/ 18 ноября 2010

Я исследую новый проект, который будет сайтом в стиле социальной сети. Я читаю на RavenDb, и мне нравится внешний вид многих его функций. Я не слишком много читал о nosql, но мне интересно, есть ли ниша, с которой он лучше всего подходит, а old school sql по-прежнему лучший выбор для других вещей.

Я думаю, что плагин разрешений был бы идеальным для сайта в стиле социальной сети - но он действительно будет работать в среде, где база данных будет забита - или он оптимизирован для системы с более отчетливым стилем, где он можно продолжать бросать новые структуры данных в базу данных и сообщать об этих структурах.

Я стремлюсь использовать правильный инструмент для работы - я буду использовать MVC3, Windsor + либо сервер Nhibernate + Sql, либо RavenDb.

Должен ли я придерживаться старой школы sql или пойти с новым ребенком на блоке: ravendb?

1 Ответ

20 голосов
/ 19 ноября 2010

Этот вопрос может быть очень близок к тому, чтобы быть субъективным (хотя на самом деле это не так), вы говорите о NoSQL, как будто это всего лишь одна вещь, а это не так.

У вас есть

  • графовые базы данных (Neo4j и т. Д.),
  • отображение / уменьшение базы данных документов в стиле (Couch, Raven),
  • базы данных документов, которые пытаются чувствовать себя как обычные базы данных (Mongo),
  • Ключ / хранилище значений (Кассандра и т. Д.)
  • моар идет сюда.

Каждый из них пытается решить другую проблему с помощью различных средств, и вы будете использовать один из них в традиционном реляционном хранилище -

  • Вопрос о пригодности
  • Вопрос личных предпочтений

В конце концов, для первичного хранилища данных для одной системы, база данных документов или реляционное хранилище, вероятно, то, что вам нужно, хотя для разных частей вашей системы вы вполне можете закончить использование графической базы данных (для вычисления соседей и т. д.) или хранилища ключей / значений (как Facebook делает / делал для входящих сообщений).

Основное преимущество выбора хранилища документов в качестве основного хранилища по сравнению с реляционным хранилищем состоит в том, что вам не нужно беспокоиться о попытке сопоставить ваши объекты в коллекцию таблиц, а также требуется меньше затрат на настройку. при этом.

Другим недостатком / недостатком будет то, что вам придется узнавать что-то новое и на этом пути совершать ошибки.

Итак, мой ответ, если я собираюсь быть прямым?

  • Подойдет RavenDB
  • Подойдет SQL

Что вы предпочитаете использовать? В эти дни я, вероятно, просто выбрал бы Raven, зная, что могу выгружать данные в реляционное хранилище для целей отчетности и, вероятно, делать то же самое для других частей моей системы, и получать свободный текстовый поиск и fastish-write / fast-reads без благодаря определению отдельных хранилищ для чтения / записи общий выигрыш.

Но это я, и я пристрастен.

...