Реализация прозрачного постоянства - PullRequest
1 голос
/ 14 июня 2010

Прозрачное постоянство позволяет использовать обычные объекты вместо базы данных. Объекты автоматически считываются и записываются на диск. Примерами таких систем являются Gemstone и Рюкзак (для обычного языка).

Упрощенная версия того, что они делают: если вы обращаетесь к foo.bar, а панель не находится в памяти, она загружается с диска. Если вы сделаете foo.bar = baz, тогда объект foo будет обновлен на диске. Большинство систем также имеют некоторую форму транзакций, и они могут иметь поддержку для совместного использования объектов в программах и даже в сети.

Мой вопрос заключается в том, каковы различные методы реализации систем такого типа и каковы компромиссы между этими подходами к реализации?

1 Ответ

1 голос
/ 14 июня 2010

Я использовал такую ​​систему (ObjectStore) в нескольких проектах, в частности, в системе коммерческого кредитного риска и системе для оптимизации потока в сетях нефтепроводов. Вопрос о реализации слишком сложен, чтобы обсуждать здесь, но что касается компромиссов между такими системами и реляционными базами данных:

Преимущества БД объекта:

  • очень очень быстро - для некоторых запросов они могут быть в 100-1000 раз быстрее, чем реляционная база данных. Фактически система риска, которую я разработал, не может (согласно самим Sybase) быть реализованной в базе данных SQL.

  • очень легко интегрировать с кодом C ++ - не нужно никаких слоев согласования импедансов.

  • ограниченное количество библиотек графического интерфейса, доступных для простых приложений CRUD

Реляционные преимущества:

  • специальные запросы намного, намного проще и быстрее, чем для объектных баз данных.

  • около миллиона инструментов для управления базой данных

  • очень легко создавать приложения с графическим интерфейсом

  • многие люди имеют опыт работы с RDBMS

Но, конечно же, как и для всех инструментов, вам не нужно выбирать один. Приложение для управления рисками, которое я написал, импортировало данные из базы данных Sybase и конвейер из Oracle.

...