База данных значений свойств

У меня есть несколько объектов, каждый из которых имеет произвольное количество общих и различных пар свойств-значений (более конкретно: файлы и связанные с ними свойства, такие как значения ширины и высоты для изображений, альбом/исполнитель/длина для музыки файлы и др.). Я хотел бы иметь возможность искать объекты, имеющие определенное свойство/значение (например, по альбому), группировать по свойству и т. д.

Какую базу данных вы бы предложили для этого сценария? Из-за модульности (возможность добавлять дополнительные свойства на лету), а также того факта, что общие свойства составляют ‹20% всех свойств, стандартный SQL с нормализованными таблицами не годится. Я уже пытался решить эту проблему, используя "тонкую модель данных. "; однако я столкнулся с серьезными проблемами масштабируемости.

Существуют ли какие-либо специализированные базы данных, настроенные для этого сценария (предпочтительнее решения с лицензией BSD)? Или любой альтернативный способ настроить стандартные RDBM для этого?


person Silver Dragon    schedule 22.02.2009    source источник
comment
Ваша тонкая модель данных — это значение атрибута сущности или EAV, если вы хотите узнать о ней больше.   -  person ChrisW    schedule 23.02.2009


Ответы (4)


Поиск объекта с некоторыми свойствами наводит меня на мысль о хранилище данных RDF. Взгляните на RDF API (см. JENA, sesame, virtuoso).

Или БерклиДБ?

person Pierre    schedule 22.02.2009

То, о чем вы говорите, называется моделью EAV или тройной магазин. Позже можно запросить с помощью SPARQL.

person vartec    schedule 24.02.2009

Пьер прав; тройной магазин — это то, что вам нужно, и RDF — это стандарт для этого. SPARQL является стандартным языком для запросов к нему (очень похоже на SQL для СУБД).

person Lee B    schedule 24.02.2009

Взгляните на базы данных, предлагаемые различными облачными сервисами:

Если облачные базы данных не подходят, BerkelyDB может быть хорошим выбором.

person Rik    schedule 23.02.2009