Книга про разработку приложений для Firebird

    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
    • +3
      Очень ждём!
      Хотелось бы видеть отдельную главу про возможные проблемы и способы их решения: целостность данных, дедлоки и т.д.
      • +1

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

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

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

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

          • +1
            кроме этого, пример udf для utf8 тут (в конце)
            https://www.ibase.ru/unicode_faq/
            • 0
              Firebase и Firebird — это разные базы. Первая — это KV от Гугла :)
              • 0

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

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

              Про UDR пока ничего нет. Писать их сложнее, но возможностей гораздо больше. Будет отдельная статья.
              • +1
                Очень интересно! Присоединяюсь к просьбе более полного раскрытия темы UDF, так как информации немного, и еще бы раскрыть близкую тему разработки BLOB фильтров. По этой теме информации еще меньше. Идеально бы с примерами кода.
              • –1
                Реквестирую разделы:
                «Перечисление FB серверов в локальном сегменте сети»,
                «Перечисление баз данных на выбранном FB сервере».
                • 0
                  таких фичей ни у Firebird, ни у InterBase нет, и вряд-ли будут. Ибо это, как минимум, противоречит безопасности.
                  • –2
                    противоречит безопасности

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

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

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

                      Я как-то не очень понимаю задачу.
                  • 0
                    За фичи ФБ голосуют в трекере, а не здесь.
                    Список БД, как и список серверов нафиг не нужен. Когда появятся схемы будет что-то похожее на список БД, хотя это не одно и то же.
                  • 0
                    Мои мысли по поводу этого поста удивительным образом сошлись с вот этим комментарием.
                    • +1
                      По роду работы часто занимаюсь починкой баз Firebird.

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

                      Удачи!
                      • 0
                        Для починки пользуетесь IBSurgeon FirstAID? Или просто gfix/gbak?
                        • 0
                          Обхожусь gfix/gbak
                          • 0
                            типовой сценарий починки давно изложен на https://www.ibase.ru/db_repair/
                            Если так не чинится, надо уже делать по другому. А тут без спец-средств обойтись сложно. Даже если знать физ. структуру БД, то не всегда эти знания помогут.
                            Кроме того, мы часто сталкиваемся со случаями, когда базе совсем кирдык, или когда время починки гораздо дольше восстановления из бэкапа.
                            • 0
                              В нашем случае типовой сценарий по указанной ссылке не содержит нужных пунктов, для наших специалистов, для конкретного продукта написали отдельный сценарий типовой починки БД.

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

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

                                      Для всего прочего уже нужны конкретные сценарии и рекомендации, с учётом специфики приложения.
                      • 0
                        уже написаны 3 статьи по ADO.NET desktop, ASP.NET MVC и Delphi, в работе для PHP, Java, Android

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

                          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.