Веб-приложение для управления проектами: реляционная или документно-ориентированная БД?

Есть довольно много сообщений, посвященных отношениям и базам данных документов, но все они довольно общие.

Хотелось бы разобраться в их различиях на конкретном примере.

Представим, что мы создаем еще одно веб-приложение для управления проектами, ориентированное на схватку.

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

Итак, подумайте о PivotalTracker. Мы будем хранить проекты, истории, комментарии к рассказам, возможно, редкие вложения и, возможно, подзадачи (история разделена на реальные задачи).

Также есть поддержка итераций, поэтому каждая задача фактически принадлежит проекту и может быть в итерации. Внутри итерации задачи нужно расположить в определенном порядке. Пользователь может переставлять истории, перетаскивая их вверх и вниз.

Для каждой истории мы также хотим отслеживать время, потраченное на нее, используя отдельные записи времени.

Я могу создавать отчеты, но ничего особенного (выгорание, возможно, что-то связанное со временем)

Какую БД вы бы использовали, реляционную или документальную? Или какой-нибудь другой? И почему?

Как бы вы спроектировали его структуру? Например, если бы вы использовали DB документов, вы бы вообще нормализовали?


person Community    schedule 06.02.2010    source источник
comment
@Omus: Не могли бы вы поставить заглавные буквы в начале предложения? Так было бы легче читать.   -  person S.Lott    schedule 06.02.2010


Ответы (1)


Основной компромисс между NoSQL и реляционными базами данных заключается в возможностях отчетности. В реляционных базах данных это делается с помощью операций set, а реляционные базы данных действительно очень хорошо оптимизированы для отчетности в целом. Для этого требуются жесткие схемы, чтобы математика работала правильно. В базах данных NoSQL это делается через MapReduce, а распределенные вычисления и гибкие схемы мешают. По сути, с NoSQL ваши отчеты всегда создаются специально, а специальные отчеты практически отсутствуют. По этой причине мне нравится идея, что вы должны всегда начинать с РСУБД, а затем добавлять дополнительные компоненты NoSQL по мере необходимости.

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

person Community    schedule 23.03.2013