Стратегическая проблема: Смешивание реляционного и нереляционного дб?

Был большой разговор о революционных мятежником базах данных NoSQL как Cassandra, CouchDB, Гипертаблица, MongoDB, Проект Voldemort, BigTable и еще много. Что касается меня, самые сильные профессионалы являются масштабируемостью, производительностью и простотой.

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

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

Кто-либо рекомендовал бы такой подход? Или Вы рекомендовали бы черный или белый, т.е. реляционный или нереляционный подход? Все очень приветствующиеся комментарии!


P.S.: Какая-либо идея, если такая путаница работает хорошо с Spring и Hibernate/JPA?

13
задан Ta Sas 9 July 2010 в 00:09
поделиться

2 ответа

Роб Конери недавно написал о своем опыте создания своего популярного веб-приложения TekPub как с MongoDB, так и с MySQL, подчеркнув сильные стороны обоих:

Высокочитаемый материал (информация об аккаунте, продуктах и ​​эпизодах) идеально подходит для «прямо сейчас» таких вещей, как MongoDb. То, что произошло вчера, идеально подходит для реляционной системы.

На высоком уровне Роб разделяет данные своего приложения на две области: данные времени выполнения и исторические данные. Текущее состояние корзины покупок пользователя, например, отлично подходит для хранения в MongoDB. Это объектный blob, который постоянно видоизменяется.Вести исторический учет того, что входило и выходило из корзины для покупок; когда это случилось; состояние проверки отлично подходит для реляционных табличных данных в MySQL.

Он резюмирует следующее:

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

Обновление, май 2016 г. (6 лет спустя)

Это стало более справедливым только за последние 6 лет. Сейчас обычным явлением является то, что базы данных NoSQL используются в хранилищах транзакций, а традиционные реляционные базы данных - в основе аналитических баз данных.

14
ответ дан 1 December 2019 в 23:47
поделиться

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

Конечно, есть и другие случаи, когда это уместно, но это только один пример.

Как вы упомянули, NOSQL - более простое хранилище, и это может привести к тому, что вам придется править сложный код для поддержания данных... Например, хранение списка соединений.

3
ответ дан 1 December 2019 в 23:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: