CUBRID

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 16:34, 5 января 2018.
CUBRID
Cubrid
Разработчики: Naver Search Solutions
Выпущена: 20 ноября, 2008
Написана на: C, C++, Java
Операционная система: Linux, Windows
Локализация: English
Тип ПО: База данных
Лицензия: BSD License, GPL 2.0
Веб-сайт официальный сайт


Cubrid - основанная на SQL реляционная система управления базами данных с открытым исходным кодом. Разработана в 2008 году Naver Сorporation, используется преимущественно для веб-приложений. Название состоит из сокращений слов cube и bridge. Движок распространяется под лицензией GPL 2.0, в то время как GUI и API - под лицензией Berkeley Software Distribution.[Источник 1] СУБД написана на C и C++, интерфейс администрирования — на Java, поддерживаются ОС Linux и Windows. Cubrid использует объектно-реляционный подход к хранению данных. Поэтому, в ней нет столбцов — есть атрибуты, нет таблиц — есть классы, нет строк — есть экземпляры классов, нет типов данных — есть домены, нет процедур — есть методы.

Лицензионная политика

CUBRID имеет отдельную лицензию на свой серверный движок и его интерфейсы. Механизм сервера использует лицензию GPL v2.0 или более позднюю, что позволяет распространять, изменять и получать исходный код. API- интерфейсы CUBRID и инструменты GUI имеют лицензию Berkeley Software Distribution, в которой нет обязательств по открытию производных работ. Причиной принятия двух отдельных лицензионных систем является предоставление полной свободы независимым поставщикам программного обеспечения (ISV) для разработки и распространения приложений на основе CUBRID.[Источник 2]

Архитектура

Данная СУБД состоит из трех подсистем[Источник 3]:

Архитектура CUBRID

A) Серверная. Отвечает за:

  1. управление блокировками
  2. управление транзакциями
  3. распределение свободного пространства
  4. логгирование
  5. обработка объектов и запросов

B) Клиентская. Отвечает за:

  1. парсинг и оптимизацию запросов
  2. кэширование объектов и блокировок
  3. управление объектами, транзакциями и триггерами

C) Промежуточная (Broker). Отвечает за:

  1. мониторинг
  2. логгирование
  3. очередь задач
  4. пул соединений

Особенности

  1. Мультипоточность.
  2. Высокая доступность.
  3. Поддержка fail-over (если невозможно подключиться к хосту, происходит автоматическое подключение к другому).
  4. Database Sharding - разделение данных на блоки.
  5. Онлайн, оффлайн, инкрементальное резервное копирование.
  6. Высокая скорость, оптимизация под веб-сервисы.
  7. Надежность.
  8. Кэширование запросов.
  9. Иерархичность запросов.
  10. Поддержка регулярных выражений.
  11. Большое число API - JDBC, PHP/PDO, ODBC, ADO.NET, OLEDB, Python, Perl, Ruby, C, Node.js, а также инструментов разработки/администрирования - CUBRID Manager, CUBRID Query Browser, CUBRID Migration Toolkit:, CUBRID Web Manager.
  12. Поддержка большого числа типов данных.
  13. Лучшая производительность на SSD.
  14. Почти полная совместимость с MySQL.
  15. Поддержка интерфейса командной строки[Источник 4]:

.

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

CUBRID доступен для Microsoft Windows и Linux (большинство дистрибутивов) для 32- и 64-разрядных архитектур. Частичная поддержка OS X реализована.

Интерфейсы

Командная строка

CUBRID поставляется со встроенным интерфейсом командной строки csql, который может использоваться для выполнения операторов SQL на сервере CUBRID. Инструмент может использоваться в одном из двух режимов:

  • CS ( клиент / сервер ), который может подключаться к локальным или удаленным серверам CUBRID
  • SA ( автономный режим), используемый главным образом для целей администрирования, который монтирует локальную базу данных путем эмуляции экземпляра сервера

Csql CUBRID также реализует некоторые внутренние команды, связанные с информацией о схеме, формированием плана, отладкой, контролем транзакций, временем запросов и т. д.

Программированные

CUBRID предоставляет ряд языковых интерфейсов прикладного программирования : драйвер C (также называемый CCI , собственный драйвер CUBRID), JDBC , драйвер PHP / PDO, ODBC , OLEDB , ADO.NET , драйвер Ruby, драйвер Python , узел. js и драйвер Perl .

Графические

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

  • CUBRID Manager - это средство администрирования базы данных для CUBRID, распространяемое по лицензии BSD
  • CUBRID Query Browser - облегченная версия CUBRID Manager
  • CUBRID Web Manager - это веб-версия CUBRID Manager, которая может быть развернута на удаленных серверах
  • Инструмент CUBRID Migration Toolkit - это инструмент, который позволяет переносить данные из MySQL и предыдущих версий баз данных CUBRID на последний сервер базы данных CUBRID[Источник 5]:

История выпуска

Версия Дата выпуска Дата выпуска бета-версии Дополнение
10.1 Июль 2017 Включает полезные расширения SQL: CTE (Common Table Expressions) и другие.
10.0 Февраль 2016 Обеспечивает изоляцию снимков на основе протокола MVCC. Включает множество расширений SQL и функций / операторов.
9.3 Май, 2014 Новые функции SQL, поддержка блокировки схемы, поддержка различных синтаксисов SHOW, повышение производительности.
9.2 Сентябрь, 2013 SQL-профилирование, поддержка новых SQL, несколько улучшений
9.1 Март, 2013 Новые функции SQL и подсказка индекса, улучшения производительности и оптимизации.
9.0 Октябрь, 2012 Поддержка интернационализации, индекс функции, индекс фильтра, сканирование индекса, утверждение MERGE, функции окна.
8.4.3 20 Ноября, 2012 Баланс базы данных , балансировка нагрузки уровня API, встроенный веб-менеджер с поддержкой мониторинга
8.4.1 24 Февраля, 2012 1 Февраля, 2012 Важные оптимизации производительности, расширения SQL, оператор REGEXP.
8.4.0 1 июля, 2011 12 Марта, 2011 Улучшения высокой доступности, усовершенствования API CUBRID C, заметная оптимизация производительности, охватывающая индекс.
3.1 31 Декабря, 2010 12 Ноября, 2010 Поддержка BLOB и CLOB, поддержка мониторинга высокой доступности, усовершенствования драйверов (JDBC, ODBC и CUBRID C API).
3.0 4 Октября, 2010 19 Июля, 2010 Расширения SQL, улучшения высокой доступности
2.2 30 Апреля, 2010 Улучшения высокой доступности, усовершенствования API CUBRID C, некоторые улучшения производительности
2.1 Декабрь, 2009
2.0 Август, 2009
1.4 Март, 2009
1.3 Февраль, 2009
1.2 Январь, 2009
1.1 Ноябрь, 2008 CUBRID стал проектом с открытым исходным кодом
1.0 Октябрь, 2008 Первый стабильный выпуск

Примеры

Получение данных (PHP)
<html>
    <head>
    <meta http-equiv="content-type" content="text/html; charset=euc-kr">
    </head>
    <body>
    <center>
    <table border=2>
    <?php
        /**
         * Информация для подключения
         */
        $host_ip = "localhost";
        $host_port = 33000;
        $db_name = "demodb";
        /**
         * Подключаемся к серверу. Непосредственно подключение не выполняется, 
         * только передаем информацию по подключению
         */
        $cubrid_con = @cubrid_connect($host_ip, $host_port, $db_name);
 
        if (!$cubrid_con) {
            echo "Database Connection Error";
            exit;
        }
    ?>
    <?php
        $sql = "select sports, count(players) as players from event group by sports";
        /**
         * Запрашиваем результат SQL запроса.
         * Непосредственно подключаемся к БД
         */
        $result = cubrid_execute($cubrid_con, $sql);
 
        if ($result) {
            /**
             * Получаем имена столбцов
             */
            $columns = cubrid_column_names($result);
            /**
             * Получаем количество столбцов
             */
            $num_fields = cubrid_num_cols($result);
            /**
             * Выводим имена столбцов на экран
             */
            echo("<tr>");
 
            while (list($key, $colname) = each($columns)) {
                echo("<td align=center>$colname</td>");
            }
 
            echo("</tr>");
 
            /**
             * Получаем результаты
             */
            while ($row = cubrid_fetch($result)) {
                echo("<tr>");
 
                for ($i = 0; $i < $num_fields; $i++) {
                    echo("<td align=center>");
                    echo($row[$i]);
                    echo("</td>");
                }
 
                echo("</tr>");
            }
        }

        cubrid_commit($cubrid_con);
        cubrid_disconnect($cubrid_con);
    ?>
    </body>
    </html>
Добавление данных (PHP)
<html>
    <head>
    <meta http-equiv="content-type" content="text/html; charset=euc- kr">
    </head>
    <body>
    <center>
    <table border=2>
    <?php
        /**
         * host_ip is the IP address where the CUBRID Broker is installed
         * host_port is the port number of the CUBRID Broker
         * db_name is the name of CUBRID Database
         */
        $host_ip = "localhost";
        $host_port = 33000;
        $db_name = "demodb";
        $cubrid_con = @cubrid_connect($host_ip, $host_port, $db_name);
 
        if (!$cubrid_con) {
            echo "Database Connection Error";
            exit;
        }
    ?>
    <?php
        $sql = "insert into olympic (host_year,host_nation,host_city,"
            . "opening_date,closing_date) values (2008, 'China', 'Beijing',"
            . "to_date('08-08-2008','mm-dd- yyyy'),to_date('08-24-2008','mm-dd-yyyy')) ;"
        $result = cubrid_execute($cubrid_con, $sql);
        if ($result) {
            /**
             * Handled successfully, so commit.
             */
            cubrid_commit($cubrid_con);
            echo("Inserted successfully ");
        } else {
            /**
             * Error occurred, so the error message is output and rollback is called.
             */
            echo(cubrid_error_msg());
            cubrid_rollback($cubrid_con);
        }
        cubrid_disconnect($cubrid_con);
    ?>
    </body>
    </html>

Источники

  1. "How data is stored in CUBRID RDBMS? Intro to Objects, Classes, OID and Inheritance" [2005—2017]. Дата обновления: 05.03.2017. http://www.slideshare.net/cubrid/cubrid-inside-architecture-source-management-components (дата обращения: 21.12.2017).
  2. "CUBRID License" [2005—2017]. Дата обновления: 05.03.2017. https://web.archive.org/web/20130116120151/ (дата обращения: 21.12.2017).
  3. "The Client-Server Architecture and Execution Modes in CUBRID Database" [2005—2017]. Дата обновления: 05.03.2017. https://www.cubrid.org/blog/cubrid-life/client-server-architecture-execution-modes-cubrid-database/ (дата обращения: 21.12.2017).
  4. "The Client-Server Architecture and Execution Modes in CUBRID Database" [2005—2017]. Дата обновления: 05.03.2017. https://www.cubrid.org/blog/cubrid-life/client-server-architecture-execution-modes-cubrid-database/ (дата обращения: 21.12.2017).
  5. "CUBRID Manager page" [2005—2017]. Дата обновления: 05.03.2017. https://www.cubrid.org/wiki_tools/entry/cubrid-manager (дата обращения: 21.12.2017).