Гибкий персистентный слой - PullRequest
       8

Гибкий персистентный слой

1 голос
/ 01 сентября 2010

Я занимаюсь разработкой приложения ASP.NET MVC 2. В настоящее время я использую Entity Framework 4 с переключаемыми хранилищами данных SQLServer и MySQL.

Недавно появилось требование для приложения, позволяющее манипулировать пользовательскими моделями / объектами. Теперь я не уверен, подходит ли вообще база данных SQL / реляционная; например, вместо добавления / удаления объектов «Сотрудник» пользователь должен иметь возможность определять «Сотрудника» и какие свойства он имеет - эффективно добавляя / удаляя таблицы и столбцы на лету, во время выполнения.

  1. SQL не подходит для этого? Существуют ли варианты, которые позволяют мне оставаться в структуре реляционной базы данных и при этом удовлетворять этому требованию? В Entity Framework я могу восстановить файлы .edmx «на лету» или есть альтернативы, которые достигают аналогичных целей?

  2. Я кратко рассмотрел другие опции, такие как dbs на основе документов и dbs-схемы / no-sql, такие как MongoDb. Я также рассмотрел некоторые форматы сериализации, такие как буфер протокола Google, JSON и XML. Из вашего опыта, какие из них особенно подходят для этой цели? Производительность сериализации не является большой проблемой.

Приложение находится в зачаточном состоянии, и у меня нет временных ограничений. По сути, я свободен переписать его, как мне угодно, поэтому, если слом и начать заново - лучшая альтернатива, я очень открыт этому. Каковы ваши предложения? Заранее спасибо!

1 Ответ

3 голосов
/ 01 сентября 2010

Прежде чем рассматривать варианты, я бы предложил (если вы еще этого не сделали :-), что вам необходимо получить четкое определение того, что именно пользователи смогут определить.Как только вы это сделаете, вы сможете получить представление о необходимом уровне гибкости и, следовательно, о типе хранилища данных, необходимого для выполнения этой работы.

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

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

...