Руководство по выбору структуры базы данных / движок - PullRequest
3 голосов
/ 07 марта 2012

На моем рабочем месте мы просто натолкнулись на проблему, когда нам нужно создать своего рода приложение для инвентаризации, которое будет хранить различные типы свойств для каждого объекта и иметь возможность динамически обрабатывать свойства / столбцы, то есть мы не хотим приходится изменять приложение каждый раз, когда новое свойство для существующего объекта (скажем, теперь нам нужно учитывать аппаратное обеспечение Bluetooth!) или когда вообще появляется новый объект (теперь нам нужно учитывать геймпады!). Эти объекты, конечно, должны быть читаемыми и редактируемыми.

Хотя мы ориентированы на традиционный SQL (Oracle, MySQL, MSSQL), я не против возможности сделать это каким-либо иным способом (скажем, NoSQL), с которым мы никогда не сталкивались и отчасти забываем , Однако нам необходимо разработать ASP.NET MVC.

Любое руководство будет высоко ценится. :)

Ответы [ 2 ]

3 голосов
/ 07 марта 2012

На самом деле, описанная вами проблема прекрасно решается с помощью реляционных БД, но вашей команде это займет гораздо больше времени.Я думаю, что база данных документов - лучший выбор для вас.RavenDB - это отличная база данных документов, объединяющая в себе преимущества как реляционной базы данных, так и базы данных документов.Он полностью совместим с ACID, у него замечательный поставщик Linq и он довольно быстрый, особенно последняя сборка.

Так что мое предложение будет таким: вы никогда не узнаете точно, пока не попробуете.Единственная проблема, с которой я столкнулся при использовании ravendb, заключалась в индексации.В документации отсутствуют некоторые важные замечания, и я надеюсь, что Ayende скоро решит эту проблему, в противном случае, просто сделайте это.

Кстати, вы также можете попробовать MongoDB.Он не совместим с ACID, у него также нет поставщика Linq, и написание запросов сложнее, чем в RavenDB, как вы уже догадались, но написано на C ++, имеет атомарные операции ввода-вывода и очень очень быстрое.

1 голос
/ 07 марта 2012

Если вам требуется хранить и обрабатывать структурированные данные (или, возможно, звуковые файлы, изображения и т. Д.), И вы привыкли к Oracle, я бы посоветовал взглянуть на большие объекты и XMLType.Oracle имеет встроенную поддержку технологий XML (валидация схемы, преобразование xslt, двоичное хранилище, индексы xpath могут представлять интерес).

...