Объектные базы как они есть
От: BaZa  
Дата: 03.04.05 10:11
Оценка:
Вообщем ситуация такая: я уже не знаю, куда зашли разговоры в соседней ветке "Объектно-ориентированные БД: основные принципы, ..." поэтому хочется некоторые вещи выделить отдельно.

Вот, например, на форуме SQL.ru было высказано следующее мнение: (Хочется узнать что думаете об этом Вы)


Джентельмены.

Давайте забудем (и по крайней мере сделаем вид что отвлеклись от) все что здесь уже говорилось про объектные базы и Версант. Предлагаю более вообще не обсуждать теорию.

Простейшая формулировка как хранит данные и работает Версант (в отличие от реляционных баз):

1. Версант — это "якобы объектное хранилище". Методы объектов не выполняются и не хранятся. Хранятся только данные (структуры данных). Как в РСУБД. Буду нывать далее структурами данных Версант. Струры данных самые разнообразные — это и массивы, коллекции (вложенные коллекции), и указатели на другие объекты и пр. На эти коллекции маппируются вложенные коллекции классов (1-n). На указатели на объекты — ссылки n-m.

2. Версант (ядро) ничего не знает про Яву, с++, Smalltalk, whatever.
Средства доступа к Версанту на Яве "преобразуют" Ява объекты в структуры данных Версант. Средства доступа к Версанту на с++ "преобразуют" с++ объекты в структуры данных Версант. Предыдущие 2 предложения применимы к любым "обектным" языкам. Не буду их копировать.

3. Средства доступа.
1. Командная строка (аля sqlplus). Сама по себе не объектна. Соответственно, все запросы из командной строки возвращают структуры данных Версант. И тупо их печатают.
2. Средства доступа к Версанту на Яве.
2.1 Доступ по спецификации JDO. Это средство доступа ответственно за преобразование пришедших данных Версант в классы Ява. В соответствии со стандартом JDO, имеет свой собственный язык JDOQL. Это же средство ответственно за трансляцию JDOQL в запросы/вызовы процедур/чтоугодно нативное для Версант.
2.2 Доступ по АПИ Версант. Обеспечивает доступ непосредственно к структурам данных Версант. Запросы (по моему) на языке VQL. Имея этот доступ, можно реаливать любой мэппинг пришедших структур данных Версант на классы Ява.
2.3 Доступ по технологии Transparent Persistance. Просто вызывая функции Ява но изменению значения полей объектов, автоматически происходит преобразование данной системой доступа объектов в структуры данных Версант и их запись. Основной плюс — полное отсутствие обращений по обслуживанию сохранения объектов (поэтому и называется Transparent...)
2.4 Доступ по спецификации JDBC. Не знаю, не работал.

Единственное, что нельзя релизовать с точки зрения хранения структур в Яве — это с++ множественное наследование. Устраняется проблема путем либо интерфейсов, либо ручного маппинга.

Ессно, есть средства доступа для других объектных языков.

4. Средства ссылочной целостности — полные аналоги check constraints, foreign key, primary key. Есть хранимые процедуры и триггеры.

5. План запросов — есть хрень показывающая план запроса.



Ссылка на топик на SQL здесь