FrontBase

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 18:29, 18 декабря 2018.
FrontBase
Fb-logo.gif
Разработчики: FrontBase, Inc.
Постоянный выпуск: 8.2.8 / Август 2016
Состояние разработки: Active
Написана на: ANSI C
Операционная система: Кросс-платформенное
Тип ПО: СУБД
Лицензия: FrontBase, Inc.
Веб-сайт frontbase.com

FrontBase - реляционная СУБД. Запросы к БД обрабатываются с помощью SQL 92, для клиент-серверного взаимодействия используется TCP/IP и для работы с символьными значениями используется стандарт Unicode (Unicode 2.0). [Источник 1] FrontBase написан на ANSI C. Официальные клиенты доступны на C, Java, PHP, Perl.

Поддерживаемые платформы

FrontBase поддерживает платформы:

Особенности

В целом FrontBase направлен на работу с большими объемами данных, а также на соответствие стандартам SQL 92 и Unicode. Среди особенностей: специальные возможности для обеспечения безопасности, поддержка транзакций, репликация, живые бэкапы, кэширование и разворачивание на нескольких серверах. [Источник 2]

Большие объемы данных

FrontBase поддерживает БД петабайтовых размеров, гигабайтовых размеров значения колонок, гигабайтовых рамеров BLOB и CLOB.

В FrontBase реализована собственная файловая система для хранения файлов БД. Эта ФС состоит из разделов по половине петабайта, состоящих из блоков по 512 байт. Значения символьных колонок, BLOB или CLOB могут занимать до гигабайта. На некоторых платформах логический размер файла не может превышать гигабайт, в этом случае FrontBase разделит свое хранилище на несколько файлов, чтобы уместить в лимит платформы. [Источник 2]

Безопасность

При клиент-серверном взаимодействии используются пароли, шифрование и проверка клиентских IP.

Пароли

В FrontBase поддерживается два уровня паролей: пароль БД и пароль пользователя. Оба опциональны.

Если БД будет запаролена, то для работы с ней пользователю необходимо прислать пароль серверу в составе протокола соединения.

Каждый пользователь БД может установить себе пароль. Сервер при этом будет проверять валидность пароля при создании сессии для пользователя. При невалидном пароле сессия не будет создана, а при правильном - создается сессия, безопасность для которой обеспечивается стандартом SQL 92.

Шифрование

Создавая FrontBase базу данных, можно указать, чтобы данные, хранимые на диске, были зашифрованы. Также опционально включение шифрования канала взаимодействия между пользователем и сервером.

Шифрование данных хранилища реализовано с помощью Triple DES. Данные FrontBase хранятся в виде блоков по 512 байт, поэтому в Triple DES тоже используются 512-байтные блоки. Ключ состоит из 64 специальных битов, зависящих от расположения блока в системе и 3х56 битов для DES шифра.

Шифрование канала взаимодействия реализовано с помощью RSA.

Проверка клиентских IP

FrontBase позволяет создавать черные и белые списки IP-адресов. С их помощью можно обозначить клиентов, которым разрешено соединение.

Также есть специальный режим, когда FrontBase принимает только локальные соединения.

Репликация

Система репликации состоит из Replication мастера, Replication клиентов и Replicator. Мастером может стать любая БД с настроенным логированием транзакций. Репликация мастера производится специальным демоном, FBReplicator, который мониторит логи транзакций и сохраняет на реплики только те транзакции, которые были полностью записаны в логи. [Источник 2]

Живые бэкапы

FrontBase БД экспортируется в файл, по которому можно полностью восстановить базу. Помимо этого, можно сделать бэкап работающего сервера (живой бэкап). Процесс бэкапа не останавливает сервер и БД может принимать запросы и обновляться параллельно.

Чтобы создать живой бэкап необходимо подключится к БД как пользователь _SYSTEM и сделать запрос:

WRITE BACKUP [TO <path-name-expr>] [ COMPRESSED ];

где <path-name-expr> - путь куда сохранить бэкап. COMPRESSED - флаг для сжатия файла бэкапа. [Источник 2]

Процесс создания бэкапа на некоторых системах можно автоматизировать, например на Linux это можно сделать с помощью cron и sql92.

Кэширование

FrontBase позволяет выбирать стратегию кэширования с помощью двух главных компонент: табличное кэширование и глобальный кэш.

Всего в FrontBase 5 типов кэшей:

  • RDD (raw device driver) Cache - кэш файловой системы
  • Descriptor Cache - дескриптор для кэширования доступа к данным таблицы
  • Row Caches - кэширование строк
  • Dope Caches - кэширование колонок
  • Index Caches - кэширование индексов таблицы

В совокупности row, dope и index кэши представляют собой табличное кэширование. [Источник 2]

Драйверы, адаптеры и плагины

Для работы с FrontBase разработчиками реализована библиотека, написанная на ANSI C - FBCAccess.

Помимо библиотеки на C, есть также ODBC драйвер, JDBC для Java, WebObjects 5 плагин, адаптеры для PHP3 и PHP4, адаптер для Perl и много других.

ODBC

Драйвер для использования на Windows (NT/2000/XP/ME/98) и Mac (PowerPC/Intel) с помощью любого совместимого с ODBC приложения.

Чтобы драйвер корректно работал с FrontBase БД при первом запросе автоматически создается VIEW_NEEDED_BY_FBODBC.

JDBC

JDBC позволяет подключение к FrontBase с помощью Java. Для работы с драйвером необходимо его установить. Пример подключения к БД с помощью драйвера: [Источник 2]

import java.sql.*;
public class Test {
  public static void main(String[] args) {
    // Подключение драйвера
    try {
      Class.forName("com.frontbase.jdbc.FBJDriver");
    }
    catch ( Exception e ) {
      System.err.println("Unable to load driver");
      e.printStackTrace();
    }
    try {
      String url = "jdbc:FrontBase://hostName/databaseName";
      String user = "myusername";
      String password = "mypassword";
      Connection con = DriverManager.getConnection(url, user, password);
      Statement stmt = con.createStatement();

      /*...*/

      stmt.close();
      con.close();
    } 
    catch( SQLException ex ) {
      System.err.println("SQLException: " + ex.getMessage());
      ex.printStackTrace();
    }
  }
}

PHP3 и PHP4 адаптеры

Реализация API адаптеров очень похожа на адаптеры для MySQL. Все функции, начинающиеся с mysql_ в FrontBase адаптерах начинаются с fbsql_. PHP4 драйвер поддерживает php4.0.6 (release) и php4.0.7-dev.

Миграции

На данный момент импортировать базу в FrontBase можно из:

  • FileMaker для Mac OS
  • MySQL

Реализованы миграции с помощью специально разработанных сервисов, которые сперва необходимо загрузить с официального сайта.

FileMaker

Миграция из FileMaker состоит из двух шагов: сперва таблицы базы экспортируются из FileMaker в файлы, затем перемещаются в Mac OS.

MySQL

Сервис миграции из MySQL использует JDBC для импорта таблиц. Соответственно необходима JVM версии 1.2 или выше.

FBExec, FrontBase, FBReplicator

У СУБД есть два главных процесса: FBExec и FrontBase. Если настроена репликация, то также будет активен процесс FBReplicator.

FBExec - посредник между базой FrontBase и клиентской частью. Процесс отвечает за установление клиент-серверного соединения.

Процесс FrontBase - это сервер бд. На каждую базу создается свой отдельный экземпляр процесса.

FBReplicator служит в качестве связи между мастером репликации и клиентами репликации. Как уже говорилось, FBReplicator следит за транзакционным логом базы и повторяет успешные транзакции на реплики.

Источники

  1. 1,0 1,1 FrontBase Relatinal Database Server // FrontBase. URL: http://www.frontbase.com/cgi-bin/WebObjects/FBWebSite (дата обращения: 30.09.2018).
  2. 2,0 2,1 2,2 2,3 2,4 2,5 FrontBase 4.x Users Guide // FrontBase. URL: http://www.frontbase.com/documentation/FBUsers_4.pdf (дата обращения: 30.09.2018).

Ссылки