Eloquera V

краткое описание / немного истории / установка / режимы работы базы: service, inmemory, desktop / восстановление базы
конфигурация / программная конфигурация / простейшие операции CRUD / insert / update / refreshMode / delete
построение запросов / joins / параметры / массивы / шаблонные контейнеры / order by / доступные функции / almos
хранимые процедуры
родные и динамические объекты / работа с массивами / контейнеры / фильтрация типов, свойств и полей / backup and restore / эволюция типов / fulltext search / индексация / под капотом

«Родные» и динамические объекты

Под родными объектами в данном случае подразумеваются любые типы принадлежащие CLR или созданные вами. Eloquera может на лету (в runtime) конвертировать динамические объекты в «родные» и обратно.

Внимание!

Для использования этого функционала должно быть открыто соединение к базе.

Основные методы для конвертации:

  • ToNative<ConcretType>()
  • FromNative(variable)

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

При обновлении данных применяются следующие схемы работы:

  • Обновление через родной тип

0    Динамический тип переводим в «родной» тип

0    Изменяем «родной» тип

0    Обновляем (синхронизируем) динамический тип с помощью FromNative

  • Обновление через динамический тип

0    Существует переменная конкретного типа с данными динамического

0    Изменяем динамический тип

0    Обновляем (синхронизируем) «родной» тип с помощью ToNative<T>(variable)

Подробнее

Eloquera IV

краткое описание / немного истории / установка / режимы работы базы: service, inmemory, desktop / восстановление базы
конфигурация / программная конфигурация / простейшие операции CRUD / insert / update / refreshMode / delete
построение запросов / joins / параметры / массивы / шаблонные контейнеры / order by / доступные функции / almos
хранимые процедуры

Хранимые процедуры

Начиная с версии 4.0 Eloquera поддерживает хранимые процедуры. Я думаю, не стоит расписывать все прелести и возможности хранимых процедур. Те, кто работают с базами и так их знают. Хочу только заметить, что результат выполнения хранимой процедуры остается, связан с контекстом базы, а значит, полученные данные можно изменять и обновлять объекты в базе.

Хранимые процедуры могут рассматриваться как методы расширения к основной базе. Они пишутся с использованием C#, за что благодарность создателям, за то, что они не выдумали какой-либо свой интерпретируемый диалект для этого дела. Получается, что можно использовать все возможность .Net при написании процедур.

Итак, хватит слов, лучше показать, как создаются хранимые процедуры на деле.

Первым делом надо объявить интерфейс  с желаемыми процедурами. Данный интерфейс должен находиться на стороне клиента и сервера.

Затем создаем класс, который нужен будет только на стороне сервера. При этом библиотеку с реализацией процедуры надо поместить в папку Lib в директории базы, либо настроить путь до библиотек с хранимыми процедурами с помощью параметра StoredProceduresPath.

Добавление новых процедур не требует перезапуска сервиса базы данных.

Подробнее

Eloquera III

краткое описание / немного истории / установка / режимы работы базы: service, inmemory, desktop / восстановление базы
конфигурация / программная конфигурация / простейшие операции CRUD / insert / update / refreshMode / delete
построение запросов / joins / параметры / массивы / шаблонные контейнеры / order by / доступные функции / almos

Построение запросов

Eloquera позволяет писать запросы к базе данных на привычном многим SQL, причем с приятными дополнениями, которые я не встречал в MS SQL. Запросы можно писать в отношении полей и свойств класса, к дочерним объектам, коллекциям и массивам объектов. Все вместе это дает очень мощную платформу для анализа данных.

Как вы уже могли заметить, получение данных происходит с помощью двух функций:

  • ExecuteQuery(string query)
  • ExecuteScalar(string query)

Обе функции имеют перегруженные варианты для возможности указания глубины запрашиваемых объектов, параметров.  Да-да, можно строить параметризированные запросы.

Общий вид и порядок служебных слов в запросе тот же, что и в «обычном» SQL . Если делается запрос к одной сущности, то слово from можно опустить. Например:

Eloquera поддерживает операторы TOP, SKIP, Order by (подробно будет чуть позже).

Запросы можно строить не только для собственных полей класса, но и обращаться к составным полям, массивам. Сложный объект может содержать другие объекты или массивы, например:

Подробнее

Eloquera II

краткое описание / немного истории / установка / режимы работы базы: service, inmemory, desktop / восстановление базы
конфигурация / программная конфигурация / простейшие операции CRUD / insert / update / refreshMode / delete

Конфигурация

Файл конфигурации в поставке для автономной работы (Desktop mode) по умолчанию выглядит следующим образом:

 

Прошу обратить внимание на то, что путь для баз данных не указан. Для корректной работы надо будет его дописать, используя атрибут DatabasePath в узел Server.

Внимание!

С версии 4.0 можно полностью игнорировать файл настройки и задание директории для хранения баз данных. Eloquera самостоятельно все определит и настроит.

Подробнее

Eloquera I

краткое описание / немного истории / установка / режимы работы базы: service, inmemory, desktop / восстановление базы

Краткое описание базы

База данных Eloquera с самого начала была написана для хранения объектов  на основе .Net Framework, что сделало возможным попытаться вобрать в себя все лучшее от объектных и реляционных баз данных одновременно, преодолев многие их различия. Теоретически Eloquera может работать с любыми объектами из семейства .Net Framework, однако на практике работа проверялась пока только с C#. Главная ориентированность разработчиков на enterprise сегмент, а не на embedded решения.

Отличительные особенности Eloquera весьма внушительны и постоянно пополняются, вот их примерный список:

  • Сохраняет C# объекты (любые объекты любого языка на .Net платформе) без необходимости реализации специальных интерфейсов и адаптеров.
  • Сохраняет Dynamic объекты с любыми полями\свойствами и может сопоставить их объектам любого типа.
  • Язык запросов максимально приближен к SQL, при этом не требуется наличие какой либо реляционной SQL базы.
  • Поддержка LINQ.
  • Возвращает объекты в том виде, в котором они были сохранены (включая перечислимые типы)
  • Поддержка параметров в виде списков и массивов. В свою очередь массивы могут быть многомерными – синтаксис запросов остается неизменным.
  • Поддержка функций и выражений в запросах и конструкции ORDER BY.
  • Стандартный и расширенный ORDER BY.
  • Регулярные выражения в запросах.
  • Индексация и оптимизация запросов.
  • Пакетная вставка и обновление данных.
  • Поддержка шаблонных объектов.
  • Восстановление Read-only полей и свойств.
  • Учет классов наследников в запросах. Select ParentClass вернет и ParentClass и ChildClass.
  • Возможность построения запросов относительно указанного типа. Select ONLY ParentClass вернет только ParentClass без ChildClass.
  • Поддерживается частичный возврат объектов. Например, если вам требуется класс ForumTopic, тогда можно не подтягивать все ссылки на ForumMessages.
  • Можно указать глубину объекта для возврата в запросе.
  • Клиент-серверная архитектура.
  • Возможность одновременной работы с несколькими пользователями. Запросы выполняются одновременно и независимо.
  • Аутентификация через Windows аккаунты или через механизмы Eloquera.
  • Поддержка х86 и х64.
  • Уникальные идентификаторы для каждого объекта – отлично подходит для работы в системах не хранящих состояние и ASP.NET.
  • Поддержка культур. Например WHERE dates BETWEEN[‘en-US’] @d1 and @d2 будет интерпретировано в US формате, даже если текущий язык системы русский.
  • Нестрогий поиск c использованием конструкции ALMOST.
  • Хранимые процедуры.