2009-12-18 4 views
1

Для создания системы управления документами я смотрю на хранилища документов, такие как MongoDB, но потому, что у меня больше опыта с обычными базами данных (Firebird, Sql Server, Mysql). Интересно, возможно ли создать модель хранения документов сверху реляционной ,Как использовать реляционную базу данных в качестве документа?

Преимущества о документе магазина, схема меньше:

  • Fit хорошо к задаче хранения произвольных метаданных о файлах
  • Нет необходимости модернизировать схемы
  • По MongoDB, отличная производительность для BLOB как видео
  • Легче масштабируемость

Но с реляционной:

  • Referencial целостности
  • Лучше инструменты
  • Больше resilent врезаться & развращения
  • SQL

Итак, как может работать реляционную базу данных в этом случае?

ответ

3

Простой пример MySQL:

CREATE TABLE Docs (
    id INT, 
    attr VARCHAR(255), 
    value BLOB, 
    PRIMARY KEY (id, attr), 
    KEY attr_index (attr) 
) 

После того, как вы есть, что вы можете добавить любой атрибут в документ и прочее что-нибудь в значении, и вы можете использовать самостоятельно включается на планшете делать сложные запросы, как :

SELECT * FROM Docs AS d1, docs AS d2 WHERE d1.attr = "foo" AND d2.attr = "bar" 

Что возвращает документы с атрибутами foo и bar.

5

Рассмотрим Мартин Фаулер Serialized LOB картины:

CREATE TABLE Documents (
    documentid SERIAL PRIMARY KEY, 
    -- fixed relational attributes ... 
    document TEXT -- contains XML, YAML, whatever 
); 

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

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

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

Смежные вопросы