О системе
О компании
Цены
Наши статьи
Наши клиенты
ООО «Результат»
Введение
ORM или ДОБД
Стереотипы поведения и навыки адаптации объектов в документоориентированной БД
ДОБД на SQL
Доменный принцип построения системы
Иерархия документов в журнале
Пример построения сложной СЭД на основе RSF

Ботаник на википеде

Автор статьи о ДОБД в википедии уподобил документоориентированную БД лесу, в котором деревья покрываются сучьями, а те обрастают листиками. Странно, что он использовал термин "коллекции", а не "гербарии".
При этом автор смешал такие понятия, как ДОБД и реализованный в MongoDB NoSQL, хотя ДОБД появились в прошлом веке, когда монго еще висел на пальме в виде фрукта, а пользователи наслаждались цветочками Лотуса по $100 за штуку. Ныне покойный Lotus Notes конечно SQL'ем не назовешь, но никаких листиков на сучьях там не было.

Мы положили в основу документоориентированной БД множество несвязанных SQL-таблиц (журналов) и доменный принцип построения системы: просто, понятно, гибко,
легко описывается, легко администрируется, легко масштабируется.

Чтобы не путать с интернетом, домен пишем слева направо:
RF.TVR.MF - министерство финансов Тверской области РФ.
RF.TVR.MO - министерство образования Тверской области РФ.

Алиас журнала формируется из домена, префикса журнала и года:
RF.TVR.MF/DP_2014 - журнал "Входящие 2014" Минфина ТО

Имя SQL-таблицы формируется из алиаса: RF_TVR_MF_DP_2014

Ссылки на документы состоят из алиаса журнала и UNID'а документа:
RF.TVR.MF/DP_2014&BABAD9A62B0B5A1016627D7FC005F176

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

Выглядит это примерно так:
...
# doc - исходный объект, многозначное поле links содержит ссылки
if doc.links: # проверяем, есть ли непустое поле со ссылками
    link = doc.A('links')[0] # берем первую ссылку
    dbAlias, unid = link.split('&') # расщепить ссылку на алиас и UNID
    db = getDB(dbAlias) # установить коннекцию к журналу
    linkedDoc = db.getDocumentByUNID(unid) # загрузить связанный документ
...





Яндекс.Метрика