Skip to content

Объявление

Друзья! Коллеги!

Последний месяц первого квартала - в сплошных поездках по стране и СНГ. График настолько плотный, что нарушаются все планы, в том числе, проведения вебинаров. Надеюсь, я найду у всех понимание, почему пришлось сдвинуть два последних вебинара на начало апреля. Приношу глубочайшие извинения и приглашаю все же принять участие 2 и 9 апреля, соответственно.

До встречи!

Delphi XE5 и MongoDB (продолжение)

Продолжаем конспект из предыдущего поста http://blogs.embarcadero.com/asovtsov/index.php/archives/615, посвященного разбирательству, можно ли разрабатывать приложения на Delphi XE5, получающие и сохраняющие данные в БД MongoDB.

Установка драйвера, сборка тестовых примеров и поверка их прошли без особых проблем.

Как выглядит технология обращения к MongoDB из примера программы на Delphi? Заглянем внутрь примера AddressBook.

const
  db = 'test';
  ns = db + '.addresses';

...

initialization
  mongo := TMongo.Create();
  if not mongo.isConnected() then begin
    ShowMessage(NoConnectMsg);
    Halt(1);
  end;
  mongo.indexCreate(ns, 'phone');

Соединение с сервером открывается сразу же при инициализации приложения.  Здесь используются значения по-умолчанию: localhost:27001. Поэтому нет установок свойств объекта коннекции.

Дальше видны особенности архитектуры СУБД и драйвера.

MongoDB это документ-ориентированная БД. Хранит "документы" - иерархические объекты, максимально близкие по структуре с JSON-объектами. Имеется мощный язык запросов, основные компоненты которого являются такими же объектами. Поэтому, так легко работать с запросами и их результирующими наборами данных из языков JavaScript, Python и т.п. Для обеспечения максимального быстродействия внутри эти документы хранятся в формате BSON - "binary JSON". Библиотека доступа содержит классы для работы с BSON. Для сериализации параметров запросов и полей для записи служат методы класса TBsonBuffer, учитывающие особенности представления типов элементов данных. Тем не менее, отсутствует метод (или класс), чтобы напрямую сериализовывать JSON-объект в запрос или документ. Результат запроса представляется объектом класса TBson, предоставляющего способы работы с каждым типом элементов данных и для итерации по BSON-документу, но не дающего метода десериализации BSON в строку или JSON-объект.

В рассматриваемом примере это и не требуется, там с успехом применяются существующие методы формирования BSON-запросов и чтения BSON-результатов.

procedure TForm1.btnSaveClick(Sender: TObject);
  var
    bb : TBsonBuffer;
    b : TBson;
    query : TBson;
begin
  query := BSON(['phone', txtPhone.Text]);
  if (mongo.findOne(ns, query) = nil) Or
    (MessageDlg('A record already exists with that phone number.  Replace?', mtWarning, [mbYes, MbNo], 0) = mrYes) then begin
      bb := TbsonBuffer.Create();
      bb.append('name', txtName.Text);
      bb.append('address', txtAddress.Text);
      bb.append('city', txtCity.Text);
      bb.append('state', txtState.Text);
      bb.append('zip', txtZip.Text);
      bb.append('phone', txtPhone.Text);
      b := bb.finish();
      mongo.update(ns, query, b, updateUpsert);
      ShowMessage('Record saved.');
    end;
end;
Далее...

Continue reading ›

Delphi XE5 и MongoDB

Пост в виде конспекта, чтобы не забыть и сохранить полученный опыт и идеи на будущее

Постановка вопроса

Развитие технологий хранения и обработки данных, в том числе и неструктурированных, большого объема и выраженной вариативности, вызвало стремительное развитие СУБД, альтернативных классическим реляционным. Яркий пример того — прогресс NoSQL-технологий, приходящих на замену давно известным реляционным базам данных. Вчера ещё веб базировался на нескольких известных СУБД, однако уже сегодня появилось около пяти NoSQL-решений, достойно зарекомендовавших себя. Решения оттачиваются, извлекаются уроки, — и, видя, что новая технология развивается, остальные пробуют применять её для своих нужд.

Одна из двух наиболее быстро развивающихся технологий - СУБД MongoDB компании 10gen (с этого года называется MongoDB) - документ-ориентированная NoSQL СУБД с открытым исходным кодом, горизонтально масштабируемая, обеспечивающая великолепное быстродействие на операциях чтения данных. Как документ-ориентированная СУБД, MongoDB — это довольно обобщённое NoSQL решение. Её можно рассматривать, как альтернативу реляционным СУБД.

Основная особенность - способность хранить и обрабатывать документы сложной структуры, произвольной вложенности, обеспечивая быстрый индексированный поиск по любому полю или набору полей. Такого типа СУБД называют «не имеющими схемы» (Schemaless), поскольку разные записи могут содержать документы различной структуры, причем структуру документа можно менять в дальнейшем. Обладает удобным языком запросов/модификации.  Внутренне представление документов очень близко совпадает с привычными всем записями в формате JSON, что делает их пригодными к «бесшовной» интеграции как в WEB и RESTful приложения, так и в «обычные» прикладные задачи уровня Enterprise.

Встроенным языком для MongoDB Shell является JavaScript. Компания MongoDB официально поддерживает средства программного доступа  к данным из языков:

  • C
  • C++
  • C#
  • Go
  • Erlang
  • Java
  • JavaScript
  • Node.js
  • Perl
  • PHP
  • Python
  • Ruby
  • Scala

Средства и драйвера доступа к БД MongoDB из других языков и платформ программирования поддерживаются очень активным сообществом разработчиков.

Цель - обеспечить и проверить возможность работы с MongoDB из Delphi XE5 - функционирующей в среде Windows платформы создания приложений для разных типов устройств и сред исполнения ПО.

Continue reading ›

Tagged , , , ,

Книги и материалы по проектированию БД

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

Я столкнулся с этой темой еще в начале своей трудовой деятельности. Реляционные БД еще только начинали свой победный взлет популярности, а о персональных компьютерах тогда еще никто не слышал.

Дейт, Мартин - вот базисные книги наших времен.

Чем же сегодня пользуются ведущие архитекторы баз данных у нас в стране и за рубежом?

Continue reading ›

Организационное, июль 2013

Наступил летний период отпусков. Точка!

В связи с этим, мы решили приостановить проведение вебинаров по продуктам Embarcadero для БД до возвращения наших авторов, гостей и слушателей из отпусков. Набирайтесь сил, здоровья и энтузиазма на этот и весь следующий год!  Мы готовим ряд обновлений наших продуктов и будем представлять новые.

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

https://www.youtube.com/user/MrAndysova/videos

И не забывайте про этот блог!

HTML5 Builder: Где находится PDO

Не собирался писать об этом, но получил письмо от клиента с вопросом: "Я создал форму в HTML5 Builder, из Data Explorera перетащил на нее нужную мне таблицу MS SQL Server, запустил, а на экране браузера вижу непонятное сообщение, что не получилось найти PDO драйвер. В чем дело?". Я хочу ответить на него здесь. Кому-то вопрос покажется наивным и по-детски простым. Но, напомню, мы позиционируем этот продукт не для гиков-экспертов по PHP разработке, а для разработчиков на Delphi, кому необходимо быстро создать WEB-приложение или страницу прямо сейчас, без получения полного академического обучения.

  1. Установите правильные параметры соединения с БД MS SQL Server. Например, для моей БД параметры на картинке снизу обеспечивают правильное соединение с удаленным сервером. Обязательно протестируйте соединение, нажав кнопку Test Connection.

    Вот тут уже возникает первый "капкан": для того, чтобы соединение сработало, нужно, чтобы на этом ПК предварительно был установлен Microsoft SQL Server Native Client, соотвествующий версии вашего MS SQL server и разрядности вашей ОС. Взять его можно в Microsoft Download Center.  Я взял пакет установщика здесь

Continue reading ›

Tagged , ,

Создание таблиц реляционной БД

Одно из самых частых дел, которые приходится выполнять разработчикам БД - это создание новых баз данных, таблиц в них, связей между ними и индексов для ускорения поиска. Очень часто приходится, как бы, повторять структуру, которая уже была реализована ранее на другой СУБД, или быстро вводить в действие таблицы для более удобного выполнения промежуточных операций. По мере продвижения проекта к финишу, часть такого рода таблиц уходит, часть преобразуется во временные или модифицируется для оптимизации алгоритмов, но всегда есть потребность в быстром создании таких "рабочих", в известном смысле, объектов для разработчиков.

Как и все в мире компьютеров, эта задача может быть решена различными способами. Я считаю одним из самых удобных и практичных - использование инструментов Embarcadero для работы с БД. Хотя создать таблицу можно из любого из 4 продуктов из состава DB Power Studio, реальные преимущества мы ощутим в среде DBArtisan или Rapid SQL. Вы наверняка уже встречались с этими продуктами, например, в этом блоге. :) Несмотря  на внешнюю очень большую схожесть интерфейсов редакторов объектов БД в этих двух инструментах, в них отражены существенные отличия в методах и задачах для решения которых предназначены эти средства.

DBArtisan - это средство работы администраторов БД (DBA - по английски). Я уже писал о том, что DBA много не бывает, и это к лучшему! Как и хирургам, только самым умелым, знающим и опытным могут доверить свою информацию - источник жизнеспособности и прибыльности - крупные компании. DBArtisan - это инструмент индивидуальной работы, средство обнаружить и настроить практически любой глубинный элемент той или иной СУБД. Он умеет работать из единого графического интерфейса почти с любой СУБД, параллельно, за счет применения одинаковых парадигм работы быстро получить знания и опыт выполнения большинства административных функций на менее знакомых платформах СУБД, в том числе, создание, поиск и модификацию объектов внутренней структуры БД, например, таблиц, представлений, индексов и т.п.

Команде разработчиков я бы рекомендовал пользоваться Rapid SQL. Здесь каждый разработчик может создать свой "локальный" проект, разрабатывая и тестируя общие элементы не мешая остальным, воспользоваться преимуществами системы управления исходными тестами на SQL и DDL.

Настало время запустить Rapid SQL. Нужна лицензия. Но можно воспользоваться бесплатной лицензией, которая действует в течение пробного периода (trial license). Сам продукт доступен для загрузки с сайта http://www.embarcadero.com в двух видах - обычный установщик и Instant Trial. Последний вариант выгоден, если планируется опробование нескольких продуктов, поскольку с ним не требуется установка каждой версии каждой программы - можно просто дважды кликнуть по скачанному приложению и оно запустится. Здесь используется технология Appwave. Бесплатную пробную лицензию Embarcadero высылает на электронную почту, указанную при регистрации пользователя на сайте.

Традиционно для среды Windows, слева расположено дерево подключений/источников данных и их внутренних объектов. Пользователи не только сами могут создавать и запоминать практически неограниченное количество источников, но и организовывать их в группы, маркировать их в соответствии с удобной для них системой цветовых обозначений, обмениваться  описаниями источников с другими программами Embarcadero. Выберем источник - на виртуальном сервере Oracle. Двойной клик по нему позволит открыть соединение и после этого раскроет содержимое этой ветки. В зависимости от задач бывает удобно отсортировать дерево по типам объектов или по "владельцам" объектов.

Мне потребовалось создать в схеме PRR несколько таблиц для сбора и обработки информации о блогах. Continue reading ›

Tagged , , , , , , , , , ,

Сколько DBA вам нужно?..

Один из "стандартных" вопросов, который мы слышим: "Зачем нам дополнительные инструменты, кроме тех, что поставляет производитель СУБД, мы и так справимся?" Я расскажу, а дальше вы думайте и решайте сами.

В ИТ индустрии, как и в многих других, принято опираться на аналитические обзоры, исследования и мнения аналитиков-экспертов. Компании Gartner и Forrester, надеюсь, представлять не надо. Многие журналисты ведущих зарубежных и отечественных компьютерных изданий пристально следят за аналитическими публикациями  признанных экспертов, в том числе из этих двух компаний.

Я и сам стараюсь не пропускать публикации некоторых авторов из Forrester и Gartner, использовать данные их опросов и обзоров, чтобы  лучше представлять потребности пользователей, мировые тренды и динамику сдвига точек внимания.

Один из главных мировых трендов и то, что называется "двигатель развития", - "Большие данные". Как бы мы не относились к этому, стремительно ворвавшемуся в нашу привычную работу, направлению - с недоверием к очередному "раздутому пузырю", с любопытством к потенциальному источнику новых доходов, с поддержкой на основе личного опыта и лучших практик - это направление стремительно развивается, несмотря на то, что многие вкладывают в эти слова свой смысл. Например, что для нас важнее: большие по объему или по количеству пользователей, по количеству записей или по количеству серверов, БД? Из чего  бы мы не исходили, но с такими объемами (Йотта- и Зеттабайты), огромным числом работающих БД, количествами транзакций и коннекций нашему персоналу датацентров справляться необходимо. В том числе, администраторам БД (DBA).

Один из известных аналитиков компании Forrester Noel Yuhanna приводит результаты обработки своих многочисленных опросов  самых различных западных компаний на тему: сколько БД приходится в организации на одного DBA и какие меры они предпринимают для улучшения этого отношения.

Его результат таков: если взять только большие компании (с доходом от $1 млрд в год), то на одного DBA приходится около 40 разных баз данных, хотя все результаты укладываются в интервал от 8 до 275. В качестве причин широкого разброса значений показателя он приводит ряд факторов, например, размер БД, версию используемой СУБД, квалификацию DBA, наличие формализованного процесса по поддержке БД в организации, рабочие или тестовые (для разработки) БД, инструменты администрирования БД. Это отношение также ограничивается суммарным объемом данных во всех базах, которые администрирует DBA, так как большие БД часто требуют дополнительной настройки, резервного копирования/восстановления, особых внимания и усилий при переходе на более новые версии программного и аппаратного обеспечения.

Вы можете более подробно ознакомиться с его выводами сами, но главный его вывод в том, что оптимальным является соотношение 25 БД по 200МБ каждая или 5 по 1Тб на одного DBA.  А на практике выходит отношение - 40:1!  Что может помочь? Ответ эксперта: "Облачные технологии", переход на наиболее подходящие СУБД,  их новейшие версии, применение эффективных инструментов администрирования БД.

Возьмем, для примера, одного из лидеров рынка - Oracle. СУБД активно развивается, гарантируя обработку экзабайтов информации в реальном времени. С каждым релизом Oracle предлагает все больше возможностей, от средств разработки приложений до создания кода на SQL для оптимизации БД. Но все больше администраторов находит, что инструменты для работы с Oracle от независимых производителей являются более удобными и надежными и предоставляют больше возможностей, чем стандартные средства Oracle.

"Продукты для работы с Oracle "третьих-фирм" заполняют важную брешь в экосистеме Oracle, там, где специализированные пользовательские приложения и специфические условия поставки требуют несколько большего, чем может предложить Oracle" ("What’s out there for Oracle third-party tools")

Меня радует, что в обзоре по приведенной выше ссылке наше решение DB Power Studio было перечислено среди трех ведущих  инструментов для Oracle. И это не удивительно: мы всегда говорили о нашем решении, как об удобном, наглядном, понятном и надежном средстве, дополняющем стандартные средства важнейшими функциями, такими как управление изменениями, визуальная настройка и оптимизация SQL.

Кстати, а кто знает чему равен Бронтобайт?

Tagged , , , , , , , , ,

Мир учится: новая книга по HTML5 Builder

Пока у нас в стране идут ожесточенные споры о качестве того или иного продукта в стиле "религиозных войн", большинство практиков в динамично развивающемся мире ИТ-технологий старается освоить и применить наиболее подходящие для них способы создания программного обеспечения, как для продажи, так и для "домашнего применения". В том числе, сразу же после появления на рынке, HTML5 Builder также вызвал большой интерес, но сказывался недостаток практических руководств и учебников. Недавно книга "Application Development with Html5 Builder" появилась в продаже на Amazon и отражает наличие значительного интереса к этому инструменту быстрой разработки Web-приложений.
С помощью этой книги читатель сможет не только быстро начать создавать приложения разнообразных типов на HTML5, но и совершить быстрое погружение в популярнейшие сопутствующие технологии, например, jQuery Mobile, и досконально узнать какую роль она играет в разработке переносимых мобильных приложений. Конечно, есть документация на HTML5 Builder, доступная на сайте компании-производителя, блоги и статьи, но в книге сконцентрированы и систематизированы полезные сведения и приемы использования таких элементов, как шаблоны страниц и заготовки форм, code insertion, локальные хранилища, доступ к БД, Sqlite, Web SQL, DataSnap, модули данных, page layouts, анимация, трансформации и рисование изображений на canvas, другие особенности разработки клиентских, мобильных или серверных Web-приложений, способы и правила расширения набора компонент.
Жаль, что наши отечественные авторы не проявили такую же оперативность.

Tagged , , , ,

Ох уж этот Гугль!

Сегодня компания Google объявила о планах закрыть свой сервис Youtube. http://news.yandex.ru/

Это произошло именно в то время, когда шла закачка записей моих последних вебинаров на Youtube, что вызвало паническую спешку. Из-за этой спешки видео записалось, а звук - нет. За что ей огромное спасибо!

Но нет худа без добра! Мы объявляем программу по созданию "беззвучных вебинаров" - имиджевых аналогов "немого синематографа" - "великого немого"! Если вы готовы творчески и без лишних слов рассказать об использовании продуктов для работы с БД компании Embarcadero  - мы, с своей стороны, готовы наградить призами лучшие из таких произведений!

И да пребудет с нами Rock-n-roll!

Bad Behavior has blocked 0 access attempts in the last 7 days.

Close