Настраиваемая база данных - PullRequest
1 голос
/ 19 октября 2010

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

Я бы хотел, чтобы это было масштабируемым и быстрым.

Должен ли я использовать одну таблицу и четыре столбца для этого (Id, Table, Column, Type, Value) - Есть ли хорошие статьи по этому поводу. Или есть другие решения?

Может быть, три таблицы: одна, которая содержит таблицы, другая, которая содержит столбцы, и одна для значений?

Может быть, кто-то уже создал БД для этой цели?

Мои требования состоят в том, что я использую .NET (я думаю, база данных не обязательно должна быть в Windows, но я бы предпочел это)

1 Ответ

0 голосов
/ 19 октября 2010

Поскольку (в комментариях к вопросу) вы знаете о подводных камнях «эффекта внутренней платформы», также верно, что это очень распространенное требование - в частности, для хранения пользовательских столбцов, определенных пользователем. И действительно, большинству команд это нужно. Опробовав различные подходы, наиболее успешным я считаю , чтобы сохранить дополнительные данные в соответствии с записью - в частности, это упрощает получение данных, не требуя дополнительных шагов, таких как секунда. сложный запрос к внешней таблице, и это означает, что все значения совместно используют такие вещи, как метка времени / версия строки для параллелизма.

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

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

Я, однако, подчеркну важность обеспечения переносимости данных; не храните (например) какую-либо конкретную платформенную сериализацию (например, BinaryFormatter для .NET) - такие вещи, как xml / json - это хорошо.

Наконец, ваша СУБД также может работать с этим столбцом; например, SQL Server имеет тип данных xml, который позволяет вам выполнять определенные запросы и другие операции с данными xml. Вы должны принять собственное решение, будь то помощь или помеха; p


Если вам также нужно добавить таблицы, мне интересно, действительно ли вы используете СУБД в качестве СУБД; в этой точке я бы рассмотрел вопрос о переключении с СУБД на базу данных документов , такую ​​как CouchDB или Raven DB

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