firebird-logo Читатели Хабра знают, что я (Денис Симонов) уже некоторое время работаю над серией статей и примеров, которые подробно раскрывают особенности разработки приложений для СУБД Firebird для популярных языков и фреймворков: уже написаны 3 статьи по ADO.NET desktop, ASP.NET MVC и Delphi, в работе для PHP, Java, Android. Также, c 2014 года я являюсь редактором русской документации языку Firebird и членом международной группы документации Firebird.

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

Вы спросите – собственно, причем здесь Хабр?



А притом, что я планирую публиковать материалы для основных глав книги на Хабре. Это довольно необычно – сейчас публикуются только переводные главы из зарубежных книг, но я надеюсь, что администрация Хабра не будет против русской книги.

Сейчас Firebird незаслуженно рассматривается как СУБД для маленьких БД, хотя есть примеры промышленной эксплуатации БД до 4 терабайт (в Металинвестбанке, например) и с несколькими тысячами пользователей, поэтому в книгу обязательно будет раздел о преимуществах Firebird перед другими СУБД и поддержке больших данных.

В целом, я планирую довольно традиционный план для книги: основное внимание будет уделено процессу разработки приложений с использование различных технологий, сред разработки и языков программирования. Помимо этого, рассмотрим как устанавливать Firebird на Windows, Linux, MacOS, Android и конфигурировать его.

Небольшая глава будет посвящена основам языка SQL, небольшая – потому что полное руководство по языку SQL вы можете найти здесь. Также будет рассказано об основах администрирования Firebird, средствах трассировки и мониторинга, обеспечении безопасности ваших баз данных. В заключительной части будет рассказано о расширении возможностей самой СУБД Firebird, написании внешних функций (UDF) и новых внешних модулей UDR (внешние процедуры, функции и триггеры), а также других видов плагинов.

В написании книги мне обещали помогать консультациями Дмитрий Еманов (ведущий архитектор Firebird), Роман Симаков (ведущий разработчик РедБазы), а также Алексей Ковязин и Дмитрий Кузьменко из компании iBase.ru (которая также выступает материально-денежным спонсором написания книги).

За основу будут взяты различные статьи, размещённые на сайте ibase, Руководство по языку SQL СУБД Firebird, ReleaseNotes для различных версий Firebird и другая доступная документация. Часть статей также размещены на Хабре (Создание приложений для СУБД Firebird с использованием различных компонент и драйверов: FireDac, Создание приложений для СУБД Firebird с использованием различных компонент и драйверов: ADO.NET Entity Framework 6).

Планируемая структура книги будет выглядеть следующим образом:
  • Введение
  • Преимущества Firebird
  • Установка Firebird на различные ОС (Windows, Linux)
  • Конфигурирование и подбор аппаратного обеспечения
  • Введение в архитектуру
  • Типы данных и домены
  • Объекты базы данных (метаданные)
    • Таблицы, ограничения, индексы

  • Язык SQL
    • Диалекты, виды языка SQL (DDL, DML, PSQL)
    • DML запросы (SELECT, INSERT, UPDATE, DELETE, MERGE)
    • Работа с транзакциями
    • Разработка PSQL модулей (процедуры, функции, пакеты, триггеры)

  • Безопасность
  • Инструменты администрирования
    • Различные способы создания резервных копий и восстановление БД
    • Знакомство со популярными инструментами администрирования
    • Трассировка и аудит
    • Расширенные средства трассировки и администрирования из комплекта HQBird

  • Программирование с использованием Firebird
    • Создание базы данных для примеров
    • Создание приложения с использованием Delphi (FireDac, IBX, FibPlus)
    • Создание Windows приложения с использованием ADO.NET и Entity Framework
    • Создание Web приложения с использованием ASP.NET MVC
    • Создание Web приложения на языке Java
    • Создание Web приложения на языке PHP
    • Создание мобильного приложения под Android

  • Расширение возможностей Firebird
    • Написание UDF
    • Написание UDR (внешних ХП, функций, триггеров) на Delphi/C++
    • Написание UDR на Java
    • Написание других видов плагинов



Если у кого-то есть предложения по содержанию книги, буду рад их учесть.
Поделиться с друзьями
-->

Комментарии (26)


  1. ITMatika
    30.06.2016 16:19
    +3

    Очень ждём!
    Хотелось бы видеть отдельную главу про возможные проблемы и способы их решения: целостность данных, дедлоки и т.д.


  1. vdmitriyev
    30.06.2016 16:57
    +1

    У меня вопрос касательно UDF для Firebase — не могли бы вы подсказать хороших ресурсов по тематике?


    1. sim_84
      30.06.2016 17:20

      По UDF есть старая статья http://www.ibase.ru/udf_ok/
      Ещё есть примеры готовых UDF http://www.ibase.ru/d_udf/

      В книге всё будет обновлено до текущего положения дел.


      1. vdmitriyev
        30.06.2016 17:26

        Спасибо за ответ и за ссылки!


    1. DmitryKuzmenko
      30.06.2016 17:52
      +1

      кроме этого, пример udf для utf8 тут (в конце)
      https://www.ibase.ru/unicode_faq/


    1. Greendq
      01.07.2016 10:42

      Firebase и Firebird — это разные базы. Первая — это KV от Гугла :)


      1. vdmitriyev
        01.07.2016 10:59

        Спасибо, это просто опечатка с моей стороны.


  1. sim_84
    30.06.2016 17:15
    +1

    По UDF есть старая статья http://www.ibase.ru/udf_ok/

    Про UDR пока ничего нет. Писать их сложнее, но возможностей гораздо больше. Будет отдельная статья.


    1. s_kozlov
      30.06.2016 19:50
      +1

      Очень интересно! Присоединяюсь к просьбе более полного раскрытия темы UDF, так как информации немного, и еще бы раскрыть близкую тему разработки BLOB фильтров. По этой теме информации еще меньше. Идеально бы с примерами кода.


  1. gasizdat
    30.06.2016 22:09
    -1

    Реквестирую разделы:
    «Перечисление FB серверов в локальном сегменте сети»,
    «Перечисление баз данных на выбранном FB сервере».


    1. DmitryKuzmenko
      30.06.2016 23:16

      таких фичей ни у Firebird, ни у InterBase нет, и вряд-ли будут. Ибо это, как минимум, противоречит безопасности.


      1. gasizdat
        30.06.2016 23:40
        -2

        противоречит безопасности

        Безопасности противоречит дырявый код и кругом торчащие уши API файловой БД на стероидах. Например, MS SQL Server вполне себе безопасен и позволяет все из перечисленного.

        Тем не менее, перечисленные фичи можно эмулировать и на FB, правда через одно место.


        1. DmitryKuzmenko
          01.07.2016 00:03
          +4

          >кругом торчащие уши API файловой БД на стероидах
          в смысле?
          Кроме того, прошу объяснить, зачем кому-то знать список всех баз, которые есть на сервере ФБ? И как вообще этот список подсовывать серверу? Ну допустим, нечто вроде aliases.conf. Но
          — приложение обычно работает с конкретной базой данных (или базами).
          — админ сервера БД и так знает, какие базы где лежат

          Насчет «локального сегмента сети» — допустим, в сети есть 3 сервера ФБ — на винде, на CentOs, и на MacOS. Они должны сообщать друг-другу, что они есть в сети? Зачем? Или, должен быть некий софт, который будет тыкать все компы сети в порт 3050? А если у меня они все на разные порты настроены?

          Я как-то не очень понимаю задачу.


    1. sim_84
      01.07.2016 00:30

      За фичи ФБ голосуют в трекере, а не здесь.
      Список БД, как и список серверов нафиг не нужен. Когда появятся схемы будет что-то похожее на список БД, хотя это не одно и то же.


  1. o_nix
    01.07.2016 00:53

    Мои мысли по поводу этого поста удивительным образом сошлись с вот этим комментарием.


  1. Temmokan
    01.07.2016 06:13
    +1

    По роду работы часто занимаюсь починкой баз Firebird.

    Так что типовые сценарии по починке и восстановлению, когда возможно, данных будут полезны, думаю, многим. Некоторые нюансы пришлось или на своём опыте обнаруживать, или выуживать из сотен комментариев на миллионах форумов — а, казалось бы, такое надо брать из документации.

    Удачи!


    1. AlexeyKovyazin
      01.07.2016 11:34

      Для починки пользуетесь IBSurgeon FirstAID? Или просто gfix/gbak?


      1. Temmokan
        01.07.2016 14:32

        Обхожусь gfix/gbak


        1. DmitryKuzmenko
          08.07.2016 20:15

          типовой сценарий починки давно изложен на https://www.ibase.ru/db_repair/
          Если так не чинится, надо уже делать по другому. А тут без спец-средств обойтись сложно. Даже если знать физ. структуру БД, то не всегда эти знания помогут.
          Кроме того, мы часто сталкиваемся со случаями, когда базе совсем кирдык, или когда время починки гораздо дольше восстановления из бэкапа.


          1. Temmokan
            08.07.2016 20:31

            В нашем случае типовой сценарий по указанной ссылке не содержит нужных пунктов, для наших специалистов, для конкретного продукта написали отдельный сценарий типовой починки БД.

            Специфика такая, что очень часто починка — чуть не единственный способ вернуть хоть какие-то данные.


            1. DmitryKuzmenko
              09.07.2016 01:39

              мне жутко интересно, что это за пункты и сценарий.


              1. Temmokan
                09.07.2016 11:38

                Например, генераторы, которые вернут неуникальное значение для идентификатора — база на вид нормальная, но в реальности использовать её можно только после того, как все генераторы проверены (или, что проще, каждому выставлено следующее значение за пределами MAX() значения столбца, в который его вставят).


                1. DmitryKuzmenko
                  09.07.2016 15:01

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

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


                  1. Temmokan
                    09.07.2016 15:03

                    Ну так сферическая БД в вакууме, сиречь без привязки к конкретному приложению — тут как бы и так ясно, что и где проверять. «Общее состояние здоровья», оно типично для многих СУБД.

                    Для всего прочего уже нужны конкретные сценарии и рекомендации, с учётом специфики приложения.


  1. bat
    01.07.2016 07:29

    уже написаны 3 статьи по ADO.NET desktop, ASP.NET MVC и Delphi, в работе для PHP, Java, Android

    есть опыт работы с FB на PHP, было бы интересно почитать соответствующую статью


  1. soy_demetrio
    01.07.2016 14:15

    Не хватает главы про reliability и scalability: поддержка кластеризации, partitioning, sharding; наличие/отсутствие fault tolerant client; возможно, для этой БД есть что-то типа pgpool, и т.д.
    Ещё, если у неё есть какие-нибудь vendor specific фичи, хорошо бы главу про них. Типа как Postgre может индексировать поля JSON-структуры, лежащей в строковом поле, и искать по ним, или поддержка очередей в Oracle.