Дб4о
![]() | В этой статье есть несколько проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти шаблонные сообщения )
|
![]() | |
Разработчик(и) | Актиан |
---|---|
Стабильная версия | 8.0
|
Написано в | С# , Ява |
Операционная система | Кросс-платформенный |
Тип | База данных объектов |
Лицензия | Стандартная общественная лицензия GNU (GPL) Лицензия на совместимость с открытым исходным кодом db4o (dOCL) Собственная лицензия |
db4o (база данных для объектов) представляла собой встраиваемую базу данных объектов с открытым исходным кодом для разработчиков Java и .NET . Он был разработан, лицензирован и поддерживается компанией Actian . В октябре 2014 года Actian отказалась продолжать активное продвижение и продвижение коммерческих продуктов db4o для новых клиентов. [1]
История
[ редактировать ]Термин « объектно-ориентированная система баз данных» появился примерно в 1985 году, хотя первые исследовательские разработки в этой области начались в середине 1970-х годов. Первые коммерческие системы управления объектными базами данных были созданы в начале 1990-х годов; они добавили концепцию персистентности, управляемой базой данных, в область объектно-ориентированной разработки.
Вторая волна роста наблюдалась в первом десятилетии XXI века, когда объектно-ориентированные базы данных, написанные полностью на объектно-ориентированном языке на рынке появились . db4o — один из примеров таких систем, полностью написанных на Java и C#.
Проект db4o был начат в 2000 году главным архитектором Карлом Розенбергером и выпущен в продажу в 2001 году. Он использовался в корпоративных и академических приложениях до его коммерческого анонса в 2004 году недавно созданной частной компанией Db4objects Inc.
В 2008 году db4o была приобретена корпорацией Versant , которая продавала его как программное обеспечение с открытым исходным кодом с двойной лицензией: коммерческой и GNU General Public License (GPL).
Обзор
[ редактировать ]db4o представляет собой объектно-ориентированную модель базы данных . Одна из его основных целей — предоставить простой и удобный интерфейс для сохранения объектно-ориентированных языков программирования . Разработка с использованием базы данных db4o не требует создания отдельной модели данных : модель классов приложения определяет структуру данных. db4o пытается избежать несоответствия объектно-реляционного импеданса , исключая реляционный уровень из программного проекта. db4o написан на Java и .NET и предоставляет соответствующие API. Он может работать в любой операционной системе, поддерживающей Java или .NET. Он предлагается по лицензиям, включая GPL, лицензию на совместимость с открытым исходным кодом db4o (dOCL) и коммерческую лицензию на использование в проприетарном программном обеспечении.
Разработчики, использующие реляционные базы данных, могут рассматривать db40 как дополнительный инструмент. Обмен данными db4o-RDBMS можно реализовать с помощью системы репликации db4o (dRS). dRS также можно использовать для миграции между объектными (db4o) и реляционными ( RDBMS ) технологиями.
В качестве встроенной базы данных db4o можно запускать в процессе приложения. Распространяется в виде библиотеки (jar/dll).
Функции
[ редактировать ]База данных в одну строку кода
[ редактировать ]db4o содержит функцию для хранения любого объекта:
objectContainer.store(new SomeClass());
SomeClass здесь не требует каких-либо реализаций интерфейса, добавления аннотаций или атрибутов. Это может быть любой класс приложения, включая сторонние классы, содержащиеся в ссылочных библиотеках.
Все объекты полей (включая коллекции) сохраняются автоматически. Особые случаи можно обрабатывать путем написания обработчиков пользовательских типов. [2]
Встраиваемый
[ редактировать ]db4o предназначен для встраивания в клиенты или другие программные компоненты, невидимые для конечного пользователя. Таким образом, db4o не требует отдельного механизма установки, а поставляется в виде одного библиотечного файла размером около 670 КБ в версии .NET и около 1 МБ в версии Java.
Клиент-серверный режим
[ редактировать ]Версия клиент/сервер позволяет db4o взаимодействовать между клиентскими и серверными приложениями. Он использует TCP/IP для связи клиент-сервер и позволяет настраивать номер порта. Общение осуществляется посредством обмена сообщениями.
Благодаря функции, называемой «Общее отражение», db4o может работать без реализации постоянных классов на сервере. Однако этот режим имеет ограничения. [3]
Динамическая эволюция схемы
[ редактировать ]db4o поддерживает автоматическое развитие схемы объектов при изменении базовой модели класса (удаление/добавление имени поля). Более сложные модификации модели классов, такие как изменение имени поля, изменение типа поля, перемещение иерархии, не автоматизируются «из коробки», но могут быть автоматизированы путем написания небольшой служебной программы обновления (см. документацию ).
Эту функцию можно рассматривать как преимущество перед реляционной моделью, где любое изменение схемы приводит в основном к проверке кода вручную и обновлению в соответствии с изменениями схемы.
Нативные запросы
[ редактировать ]Вместо использования строковых API (таких как SQL , OQL , JDOQL, EJB QL и SODA), собственные запросы (NQ) позволяют разработчикам просто использовать сам язык программирования (например, Java, C# или VB.NET) для получить доступ к базе данных и, таким образом, избежать постоянного, снижающего производительность переключения контекста между языком программирования и API доступа к данным. Нативные запросы также обеспечивают безопасность типов , а также устраняют необходимость очистки от внедрения кода (см. SQL-инъекция ).
ЛИНК
[ редактировать ]Поддержка LINQ полностью интегрирована в db4o для .NET версии 3.5. LINQ позволяет создавать объектно-ориентированные запросы любой сложности с преимуществами проверки во время компиляции, интеграции IDE Intellisense и автоматического рефакторинга.
Благодаря интеграции с некоторыми библиотеками с открытым исходным кодом db4o также позволяет оптимизировать запросы LINQ в Compact Framework.
LINQ можно использовать как для реляционного, так и для объектного хранилища данных, обеспечивая тем самым мост между ними. Его также можно использовать в качестве уровня абстракции, позволяя легко переключать базовую технологию базы данных.
Недостатки
[ редактировать ]Недостатки и трудности, с которыми сталкиваются другие объектные базы данных, также применимы и к Db4o:
- Другими вещами, которые работают против ODBMS, по-видимому, являются отсутствие совместимости с большим количеством инструментов/функций, которые считаются само собой разумеющимися в отношении SQL, включая, помимо прочего, стандартные соединения, инструменты отчетности , OLAP инструменты , а также стандарты резервного копирования и восстановления. [ нужна ссылка ] Объектным базам данных также не хватает формальной математической основы, в отличие от реляционной модели , а это, в свою очередь, приводит к слабостям в их запросов поддержке . Однако некоторые СУБД полностью поддерживают SQL в дополнение к навигационному доступу, например Objectivity /SQL++, Matisse и InterSystems CACHÉ. Эффективное использование может потребовать компромиссов для синхронизации обеих парадигм.
К недостаткам, характерным для Db4o, можно отнести:
- Отсутствие полнотекстового индексирования , низкая производительность полнотекстового поиска. [4]
- Отсутствие индексации для строковых типов , что означает, что текстовый поиск потенциально может быть очень медленным.
- «Не существует общего языка запросов, такого как SQL , который можно было бы использовать для анализа данных или других приложений. Это не позволяет db4o быть очень гибким в гетерогенной среде» [4]
- Репликацию невозможно выполнить административно, т. е. необходимо запрограммировать приложение для выполнения репликации. «Это противоречит большинству СУБД, где администраторы управляют серверами и репликацией между ними». [4]
- Удаленные поля не удаляются сразу, а просто скрываются до следующей дефрагментации. [ нужна ссылка ]
- Нет встроенной поддержки импорта/экспорта данных в/из текстовых файлов, XML или JSON . файлов
Переносимость и кроссплатформенное развертывание
[ редактировать ]db4o поддерживает Java JDK версий от 1.1.x до 6.0 и работает на Java EE и Java SE . db4o также работает с диалектами Java ME , поддерживающими отражение, такими как CDC , Personal Profile , Symbian OS , SavaJe и Zaurus . В зависимости от требований клиентов db4o также будет работать на диалектах без отражения, таких как CLDC , MIDP , BlackBerry и Palm OS .
db4o был успешно протестирован на JavaFX и Silverlight . db4o работал на Android .
db4o использует специальную функцию под названием «обобщенный отражатель» для представления информации о классе, когда определения классов недоступны, что позволяет использовать ее в смешанной среде Java-.NET, например клиент Java — сервер .NET и наоборот. [3] Универсальный отражатель также помогает конвертировать проект между средами, поскольку базу данных не нужно преобразовывать.
Документация и поддержка
[ редактировать ]db4o предоставляет источники документации: руководство, [5] справочная документация, [6] документация по API, [7] онлайн-парные трансляции [8] и блоги. [9] Информацию также можно получить с форумов. [10] и дополнения сообщества [11] (статьи, переведенные источники документации, примеры проектов и т. д.).
Коммерческим пользователям db4o предлагает подписку на dDN (сеть разработчиков db4o) с гарантированной круглосуточной поддержкой и сеансами сопряжения в реальном времени с клиентом — Xtreme Connect. [12]
Менеджер объектов
[ редактировать ]Object Management Enterprise (OME) — это инструмент просмотра базы данных db4o, доступный в виде плагина для Eclipse и MS Visual Studio 2005/2008. OME позволяет просматривать классы и объекты в базе данных, подключаться к серверу базы данных, создавать запросы с помощью перетаскивания и использовать статистику базы данных.
OME предоставляет некоторые административные функции, такие как индексирование, дефрагментация и резервное копирование. Первоначально OME предлагался клиентам как коммерческий продукт, доступный только подписчикам dDN. Начиная с версии db4o 7.8, OME был включен в стандартный дистрибутив db4o, а исходный код был доступен для общественности в репозитории db4o svn. [13]
Версии
[ редактировать ]db4o выпускает версии для разработки, производства и стабильные версии. Версия для разработки предоставляет новейшие функции и выпущена для тестирования, отзывов сообщества и оценки. Производственная версия предназначена для использования в производственной среде и включает в себя функции, которые уже были оценены и проверены временем. Стабильная версия предназначена для использования при отгрузке конечного продукта.
db4o также выполняет непрерывную сборку, которая запускается при любом новом изменении, зафиксированном в репозитории кода SVN. Эта сборка открыта для сообщества и может использоваться для оценки последних изменений и приобретения новейших функций.
Формат имени сборки db4o предназначен для предоставления всей необходимой информации о версии, времени сборки и поддерживаемой платформе:
Например: db4o-7.2.30.9165-java.zip
db4o – название продукта, т.е. ядра базы данных db4o.
7.2 – номер релиза
30 – номер итерации, т.е. порядковый номер, обозначающий неделю разработки.
9165 — номер версии SVN, соответствующий последнему коммиту, вызвавшему сборку.
java – Java-версия db4o. Версия .NET обозначается «net» для выпусков .NET 2.0 или «net35» для версии .NET 3.5. Версия .NET включает соответствующий выпуск Compact Framework.
Публичный репозиторий SVN db4o также доступен разработчикам для получения исходного кода и локальной сборки версий с пользовательскими модификациями или без них.
Ниже приведен краткий обзор основных особенностей стабильной, производственной и девелоперской сборок:
Версия | Функции |
---|---|
Стабильная (db4o-7.4) [14] | Релиз Sharpen (конвертер Java в C#) |
Производство (db4o-7.4) [14] | Релиз Sharpen (конвертер Java в C#) |
Разработка (db4o-7.10) [15] |
|
Последний выпуск Versant (db4o-8.0) [1] ноябрь 2012 г. |
Java , .NET 3.5 , .NET 4.0 |
Ссылки
[ редактировать ]- ^ Jump up to: а б «Заявление Актиана о DB4O» . Актиан . Проверено 17 марта 2015 г.
- ^ «Обработчики типов» . Архивировано из оригинала 9 июля 2011 г. Проверено 26 августа 2010 г.
- ^ Jump up to: а б «API отражения Db4o» . Архивировано из оригинала 4 апреля 2011 г. Проверено 26 августа 2010 г.
- ^ Jump up to: а б с «Архивная копия» (PDF) . Архивировано из оригинала (PDF) 6 июля 2011 г. Проверено 11 октября 2010 г.
{{cite web}}
: CS1 maint: архивная копия в заголовке ( ссылка ) - ^ «Архивная копия» . Архивировано из оригинала 17 декабря 2010 г. Проверено 26 августа 2010 г.
{{cite web}}
: CS1 maint: архивная копия в заголовке ( ссылка ) - ^ «Документация» . Архивировано из оригинала 6 ноября 2010 г. Проверено 26 августа 2010 г.
- ^ «Архивная копия» . Архивировано из оригинала 18 марта 2011 г. Проверено 26 августа 2010 г.
{{cite web}}
: CS1 maint: архивная копия в заголовке ( ссылка ) - ^ «Интернет-трансляции» . Архивировано из оригинала 10 октября 2010 г. Проверено 26 августа 2010 г.
- ^ «Блоги» . Архивировано из оригинала 22 сентября 2010 г. Проверено 26 августа 2010 г.
- ^ «Сообщество разработчиков Db4o — Форумы» . Архивировано из оригинала 12 мая 2009 г. Проверено 10 июня 2009 г.
- ^ «Сообщество разработчиков Db4o — ProjectSpaces» . Архивировано из оригинала 25 февраля 2009 г. Проверено 10 июня 2009 г.
- ^ «Информация о продукте» . Архивировано из оригинала 02 марта 2009 г. Проверено 10 июня 2009 г.
- ^ «Редакция 15856: /Trunk/Enterprise» . Архивировано из оригинала 9 июля 2011 г. Проверено 26 августа 2010 г.
- ^ Jump up to: а б «Центр загрузки: Db4o 7.4» . Архивировано из оригинала 8 февраля 2009 г. Проверено 10 июня 2009 г.
- ^ «Центр загрузки: Db4o 7.10» . Архивировано из оригинала 31 мая 2009 г. Проверено 10 июня 2009 г.
Дальнейшее чтение
[ редактировать ]- Стефан Эдлих, Джим Патерсон, Хенрик Хёрнинг, Рейдар Хёрнинг, Полное руководство по db4o , Apress , 2006, ISBN 1-59059-656-0
- Тед Ньюард, Руководство для занятого Java-разработчика по db4o , (серия из 7 статей), IBM DeveloperWorks