Как стать автором
Обновить

Объектная база данных Eloquera 2.0

Время на прочтение5 мин
Количество просмотров551
Релиз второй версии объектной базы данных Eloquera запланирован на следующий месяц. Ничего особенного, вроде бы — мало ли релизов случается еженедельно.

Но группа of crazy Russian programmers из Eloquera решила поставить небольшой эксперимент. После некоторых споров и ругани консультаций с руководством компании было решено дать доступ к отдельным билдам базы группе профессиональных программистов, не связанных с Eloquera. Зачем? На предмет «поругать»/«похвалить», а также доказать, что «свободные птицы» будут более эффективны в использовании базы и нахождению отдельных недочетов, чем штатная команда тестировщиков. Ну, и показать, что crazy Russians изобретательны до невозможности — что просто замечательно.:-)

Напомню, что Eloquera — клиент-серверная объектная база данных для .NET 2.0 и выше, со своим движком хранения данных и индексирования, поддерживающая запросы.

Сначала —

Краткий список возможностей Eloquera 2.0


  • Хранение объектов C# (и вообще любых .NET-языков) без какого-либо преобразования или имплементации интерфейсов.
  • Запросы на языке SQL. Никакой SQL базы не нужно.
  • Возвращение объектов в их исконном виде (в виде перечислений или по одиночке).
  • Поддержка массивов и списковых параметров в SQL. Массивы могут быть многомерными и «зазубренными» (jagged) — синтаксис един.
  • JOIN’ы в запросах — да, для любых полей, включая массивы!
  • Функции и выражения в запросах — по ним можно делать JOIN’ы и сортировать.
  • Стандартная и не очень стандартная сортировка
  • Регулярные выражения в запросах — Reg Ex forever!
  • Индексы — обычные такие индексы, для ускорения запросов.
  • Поддержка массовой вставки/обновления объектов (десятки тысяч объектов меньше секунды)
  • Поддержка generic объектов.
  • Наследования в запросах (SELECT ParentClass вернет как ParentClass, так и ChildClass)
  • Запросы по определенному типу (SELECT ONLY ParentClass вернет только ParentClass, но не ChildClass)
  • Возможность частичного восстановления объектов (если вам нужен объект ForumTopic, то можно не тянуть все TopicMessage, с ним связанные)
  • Указание «глубины» запроса — вернуть только A? Или A и все A.B.C? Или все связанные объекты?
  • Клиент-серверный режим работы
  • Одновременная работа множества пользователей (запросы выполняются параллельно и независимо).
  • Аутентификация через Windows аккаунты (или вообще без юзера — тогда будет использоваться аккаунт активного пользователя)
  • Реализация сервера и клиента в 32- и 64-битных вариантах.
  • Уникальный идентификатор каждого объекта — для работы в среде без состояния (конечно же, для ASP.NET)
  • Поддержка различных культур (например, where dates BETWEEN['en-US'] @d1 and @d2 — форматы будут приниматься американские, даже если работать на русской Windows)
  • Примерный поиск по оператору ALMOST

Всего очень много, например, вот какая объектная база поддерживает JOIN’ы? А массивы? Поэтому мы решили сделать серию публикаций о возможностях Eloquera 2.0, рассказывая о разных аспектах программирования под нашу объектную базу. Будем рады, если вы выскажете свои соображения по поводу того, какие статьи вы бы хотели видеть первыми. Темы — в списке выше.

Для того, чтобы быстро понять, как это все применять, привожу примерный код для работы с базой данных:

  1. // Открываем соединение к серверу - используем данные текущего пользователя для подключения.
  2. using (DB db = new DB("server=localhost;options=none;"))
  3. {
  4.     // Открываем существующую базу данных.
  5.     db.OpenDatabase("Cinemas");
  6.  
  7.     // Создаем объект в ходе работы.
  8.     Cinema cinema = new Cinema() {
  9.            Location = "Sydney",
  10.            OpenDates = new DateTime[] { new DateTime(2003, 12, 10), new DateTime(2003, 10, 3) }
  11.     };
  12.                    
  13.     // А тут мы решили его сохранить.
  14.     db.Store(cinema);
  15.    
  16.     // Можно искать по полям вложенным объектов - глубина ограничена только вашей фантазией.
  17.     var kino = db.ExecuteQuery("SELECT Cinema WHERE ALL Movies.Studios.Titles CONTAINS '20th Century Fox'");
  18.    
  19.     // Создаем параметры
  20.     Parameters param = db.CreateParameters();
  21.     param["dt1"] = new DateTime(2006, 10, 1);
  22.     param["dt2"] = new DateTime(2009, 09, 17);
  23.  
  24.     // Ищем объекты, у которых хотя бы одно значение из массива OpenDates соответствует условию.
  25.     var result = db.ExecuteQuery("SELECT Cinema WHERE OpenDates BETWEEN @dt1 AND @dt2", param);
  26.  
  27.     // Делаем что-то хорошее с результатами.
  28.     foreach (var cinema in result)
  29.     {
  30.         Console.WriteLine(cinema.ToString());
  31.     }
  32. }


Как начать работу с Eloquera 2.0?


Первое — скачать и установить Eloquera 2.0 codename Woomera (кстати, вы знаете, что такое woomera?). Есть варианты для 32- и 64-битных систем. Единственное, о чем мы просим — зарегистрироваться. В принципе, ни одно поле, кроме e-mail’а, не является обязательным, так что можно просто ввести свой электронный адрес. Но ежели кому приятнее получать письма, адресованные лично ему или ей, то добавьте свое имя — и позже вам лично напишет один из наших программистов, на предмет новых релизов и — вообще, пообщаться. А e-mail нужен, так как в ответ вам придет письмо со ссылками на скачивание базы и на другие полезные вещи.

Второе — дать себе права на подсоединение к базе. Если вы работаете администратором на локальной машине, то уже ничего делать не нужно. Если же вы все делаете по науке (что мы горячо приветствуем!), то добавьте свою группу или своего пользователя в список разрешенных на сервере. Как это сделать — можно посмотреть в документации, конкретнее — на этой странице. Проще всего добавить группу Users в список разрешенных (кстати, эта настройка будет работать, даже если у вас установлена ОС на русском, в которой подобная группа называется «Пользователи»). После этого — перезапустите сервер. Из командной строки это выглядит как

net stop "Eloquera Server 2.0"
net start "Eloquera Server 2.0"

Конечно, данная публикация не претендует на звание полного обзора новой версии базы данных Eloquera, но, надеюсь, она все же послужит хорошим поводом загрузить и попробовать нашу разработку в действии.
Теги:
Хабы:
Всего голосов 8: ↑5 и ↓3+2
Комментарии42

Публикации