Модель данных или система базы данных для использования для отслеживания больших данных с пользовательскими тегами и полями.

Я хочу создать приложение, которое позволяет отслеживать элементы и связанные с ними поля. Например, я могу захотеть отслеживать, сколько кофе я выпил, поэтому я могу создать запись о кофе и публиковать обновления, такие как 1 чашка кофе весом 8 унций, 100 мг кофеина, купленная в определенном месте. , и пьяный в такое время. Я также хочу отслеживать каждое обновление, чтобы я мог просмотреть каждое из них позже. Однако другие элементы, которые я хочу отслеживать, могут иметь совершенно другие поля (например, книги имеют названия и могут быть ранжированы с точки зрения удовольствия).

Я хочу иметь возможность затем помечать/классифицировать данные, а затем запускать запросы/отчеты по этим данным. Например, я могу захотеть узнать, сколько я потратил на еду за определенный период времени. Это будет запрашивать все элементы с тегом еды, фильтровать на основе полей времени, которые они все будут иметь, и суммировать поле стоимости для всех из них.

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

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


person Jomasi    schedule 15.07.2011    source источник


Ответы (1)


Я решил либо использовать IndexedDB (кажется абстрактным и не использует таблицы), либо использовать систему, в которой я создаю таблицы для каждого пользователя и для каждой категории. Элементы в данной категории, как правило, имеют одни и те же поля, поэтому для этого не должно быть слишком много места впустую, и я также мог бы вести запись суммы для каждого элемента для всех числовых полей.

person Jomasi    schedule 17.07.2011