Шаблоны для хранения данных в виде сетки в базе данных - PullRequest
2 голосов
/ 13 декабря 2011

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

Одна из концепций, которые у нас были, заключалась в том, чтобы просто создать новую таблицу базы данных для каждого «документа», который мы хотим сохранить. Таким образом, SQL прост и быстр. Однако это вызывает множество проблем, включая управление различными таблицами для каждого клиента, необходимость выполнения операторов «ALTER TABLE», когда они хотят добавить новый столбец, и аналогичные проблемы.

Итак, каков наилучший способ хранения данных в виде сетки с неизвестными столбцами в одной (или нескольких) таблицах в базе данных, чтобы сортировка и фильтрация не стали кошмаром?

1 Ответ

2 голосов
/ 14 декабря 2011

Пока вы не поделитесь дополнительной информацией о том, что вы пытаетесь достичь, эта простая модель ER может быть хорошим местом для начала:

enter image description here

ROW и COLUMNявляются целочисленными «координатами» в электронной таблице.

Плюсы:

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

Минусы:

  • Неэффективно (хранение -мудро) для «плотных» данных, так как много повторений будет происходить в ячейке ПК.
    • В зависимости от вашей СУБД вы можете минимизировать затраты пространства, используя сжатые индексы .
    • Вы даже можете использовать сжатую кластеризованную таблицу ( организованная по индексу таблица с сжатыми ключами (на языке Oracle), с печальным последствием возможности эффективного доступа к вызовам только по строкам или по столбцам, но не одновременно, иограниченная возможность фильтрации на VALUE (вторичные индексы в кластеризованной таблице дороги).
  • Вы должны заранее выбрать тип VALUE, что затруднит его хранениезначения неоднородных типов.Есть способы обойти это, но они увеличивают сложность и потенциально могут повлиять на производительность.
...