КУБРИД
![]() | |
Разработчик(и) | Компания КУБРИД. |
---|---|
Первоначальный выпуск | 20 ноября 2008 г. |
Стабильная версия | 11,0 / январь 2021 г [1] |
Репозиторий | github |
Написано в | С , С++ , Ява |
Операционная система | Линукс , Винда |
Доступно в | английский, корейский |
Тип | СУБД |
Лицензия | Лицензия Apache для Server Engine и лицензия BSD для API и инструментов с графическим интерфейсом. |
Веб-сайт | кубрид |
CUBRID ( / ˈ k juː b r ɪ d / «cube-rid») — это с открытым исходным кодом SQL (СУБД) на базе система управления реляционными базами данных и объектными расширениями, разработанная CUBRID Corp. для OLTP . Имя CUBRID представляет собой комбинацию двух слов «куб» и «мост» , где «куб» означает пространство для данных, а «мост» означает мост данных . [ нужна ссылка ]
Лицензионная политика
[ редактировать ]CUBRID имеет отдельную лицензию на серверный механизм и интерфейсы. Серверный движок использует лицензию Apache 2.0, которая позволяет распространять, изменять и приобретать исходный код. CUBRID API-интерфейсы и инструменты с графическим пользовательским интерфейсом имеют лицензию Berkeley Software Distribution , согласно которой нет никаких обязательств по открытию производных работ. Причина принятия двух отдельных систем лицензирования заключается в предоставлении полной свободы независимым поставщикам программного обеспечения (ISV) в разработке и распространении приложений на основе CUBRID. [2]
Архитектура
[ редактировать ]Особенностью базы данных CUBRID от других систем реляционных баз данных является ее трехуровневая клиент-серверная архитектура, состоящая из сервера базы данных, брокера соединений и уровня приложения.
Сервер базы данных
[ редактировать ]Сервер базы данных — это компонент системы управления базой данных CUBRID, который отвечает за операции хранения и выполнение операторов. Экземпляр сервера базы данных CUBRID может монтировать и использовать одну базу данных, что делает невозможными запросы между базами данных. Однако на компьютере может работать более одного экземпляра.
В отличие от других решений, сервер базы данных не компилирует запросы сам, а выполняет запросы, предварительно скомпилированные на специальном языке спецификации доступа. [ нужна ссылка ]
Брокер соединений
[ редактировать ]Основные роли брокера соединений CUBRID:
- управление подключениями клиентских приложений
- кэширование и передача информации (например, результатов запроса)
- анализ синтаксиса запроса, оптимизация и создание плана выполнения
Кроме того, локальный пул объектов позволяет отложить некоторые части выполнения с сервера базы данных (например, вставку и удаление кортежей, операторы DDL), тем самым снижая нагрузку на сервер базы данных.
Поскольку брокер соединений не привязан к той же машине, что и сервер базы данных, CUBRID может использовать преимущества аппаратных ресурсов нескольких машин при обработке запросов к одной базе данных.
Прикладной уровень
[ редактировать ]Приложения могут использовать один из доступных API для подключения к брокеру соединений CUBRID.
Функции
[ редактировать ]Высокая доступность
[ редактировать ]CUBRID High Availability обеспечивает балансировку нагрузки, отказоустойчивость и непрерывную доступность сервисов благодаря кластеризации без общего доступа, механизмам автоматического переключения при сбое и ручного восстановления после отказа.
Трехуровневая архитектура CUBRID обеспечивает встроенную поддержку высокой доступности с двухуровневым автоматическим переключением при сбое: переключение при сбое брокера и переключение при сбое сервера. [3]
Отказоустойчивость брокера
[ редактировать ]При подключении к брокеру через клиентский API пользователи могут указать в URL-адресе подключения список альтернативных хостов, на которых брокеры прослушивают входящие запросы. В случае сбоя оборудования, сети, операционной системы или программного обеспечения на одном из хостов базовый клиентский API автоматически переключается на следующий хост, предоставленный пользователем.
Аварийное переключение сервера
[ редактировать ]Среду высокой доступности можно построить с использованием узлов главного-подчиненного сервера 1:N. Каждый подчиненный узел обменивается данными с ведущим через протокол CUBRID Heartbeat. Если главный узел не отвечает, первый из подчиненных узлов получает роль главного узла. Репликация между узлами может осуществляться в одном из двух режимов: синхронном и асинхронном.
Администраторы могут указать список хостов серверов, к которым может подключаться каждый брокер, и в случае сбоя главного узла будет использоваться другой.
Масштабируемость и ремонтопригодность
[ редактировать ]Резервное копирование
[ редактировать ]CUBRID поддерживает онлайновое, автономное и инкрементное резервное копирование.
Производительность
[ редактировать ]Балансировка нагрузки на уровне API
[ редактировать ]Поскольку брокер соединений может быть настроен в четырех различных режимах (чтение-запись, только чтение, только подчиненный хост, только чтение предпочтительного хоста), список альтернативных хостов, который пользователь предоставил через URL-адрес подключения, можно использовать в качестве метода. чтобы сбалансировать нагрузку. При использовании балансировки нагрузки клиентский API случайным образом выбирает хост среди тех, которые указаны в URL-адресе подключения, за исключением того, который использовался для подключения в последний раз. Если выбранный хост недоступен, выбор будет продолжаться до тех пор, пока все хосты не будут определены как недоступные. В этом случае драйвер сообщит об ошибке.
Кэширование плана запроса
[ редактировать ]На брокере реализован кеш плана выполнения запроса , чтобы пропустить большую часть шагов компиляции по часто используемым запросам. Поскольку запросы параметризуются во время синтаксического анализа, два запроса, которые отличаются только значениями литеральных констант, используют одну и ту же запись в кэше. [4]
Хранилище
[ редактировать ]Индексы
[ редактировать ]CUBRID поддерживает индексы B+-дерева , как одностолбцовые, так и многостолбцовые. Могут быть созданы следующие типы индексов:
- Индексы и обратные индексы
- Уникальные индексы и обратные уникальные индексы
- Индексы на основе функций
- Отфильтрованные индексы
Оптимизатор запросов может использовать индексы для создания более быстрых планов выполнения, используя такие методы, как:
- Определение покрывающих индексов
- Сканирование по убыванию индекса
- ЗАКАЗАТЬ ПО пропустить
- ГРУППИРОВАТЬ ПО пропустить
- Оптимизация многодиапазонных пределов [ нужна ссылка ]
- Свободное сканирование индекса
- Индекс Пропустить сканирование
Разделение таблиц
[ редактировать ]CUBRID поддерживает горизонтальное разделение по спискам диапазонов, хешей и значений, максимум 1024 раздела на таблицу. Доступ к разделам возможен независимо, и они поддерживают большинство операций, допустимых для обычной таблицы.
Начиная с версии 9.0, CUBRID реализует обрезку разделов во время выполнения .
Поддержка SQL
[ редактировать ]CUBRID реализует большое подмножество стандарта ANSI SQL:1999 , расширенное функциями из более поздних стандартов SQL и пользовательскими функциями. [ нужна ссылка ]
Оконные функции
[ редактировать ]CUBRID обеспечивает поддержку оконных функций , определенных в стандарте SQL:2003 . Реализованные функции ROW_NUMBER , СЧИТАТЬ , МИН , МАКС , СУММА , АВГ , STDDEV_POP , STDDEV_SAMP , ВАР_ПОП , ВАР_САМП , КЛАССИФИЦИРОВАТЬ , DENSE_RANK , ВЕСТИ , МАГ и НТИЛЕ .
Иерархические запросы
[ редактировать ]Иерархические запросы с использованием нестандартных START WITH ... CONNECT BY
Синтаксис Oracle поддерживается в CUBRID. Для управления поведением выполнения запроса предусмотрен ряд специализированных псевдостолбцов и операторов.
Встроенный счетчик кликов
[ редактировать ]CUBRID оптимизирует общий сценарий в веб-приложениях, где поля базы данных необходимо увеличивать при определенных событиях (например, при просмотре страниц). В отличие от обычного подхода использования комбинации операторов SELECT/UPDATE, CUBRID может увеличивать поля во время выполнения оператора SELECT, минуя некоторые дорогостоящие накладные расходы на компиляцию, выполнение и блокировку, связанные с оператором UPDATE. [5]
Хранимые процедуры Java
[ редактировать ]Единственным языком хранимых процедур , поддерживаемым в CUBRID, является Java , требующий виртуальной машины Java в системе. установки [6] Виртуальная машина запускается и управляется сервером и используется для выполнения кода.
Код хранимой процедуры, требующий доступа к базе данных, должен использовать драйвер JDBC , либо используя родительскую транзакцию, либо выдавая новую.
Регулярное выражение
[ редактировать ]Помимо оператора LIKE, CUBRID предоставляет REGEXP Оператор для сопоставления шаблонов регулярных выражений . По умолчанию оператор выполняет без учета регистра сопоставление входной строки , но модификатор BINARY можно использовать для сценариев , чувствительных к регистру . Необязательный псевдоним РЕГЭКСП это РЛИКЕ . [7]
В предыдущей версии CUBRID 11 CUBRID не поддерживает REGEXP для строк Юникода . [ нужна ссылка ]
Из CUBRID 11 CUBRID добавляет следующие функции регулярных выражений и поддерживает их в Unicode . строках [8]
- REGEXP_COUNT , РЕГЭКСП_ИНСТР , РЕГЭКСП_ЛИКЕ , REGEXP_REPLACE , REGEXP_SUBSTR
Типы данных
[ редактировать ]различные типы данных CUBRID поддерживает :
- Для числовых значений:
- целые числа: МАЛЫЙ ИНТ (16 бит), ЦЕЛОЕ ЧИСЛО (32 бита), БИГИНТ (64 бит)
- числа с плавающей запятой : С плавающей запятой (32 бита), ДВОЙНОЙ (64 бит)
- числа произвольной точности : ЦИФРОВОЙ
- денежные значения: ДЕНЕЖНЫЕ ( двойной точности ) с плавающей запятой
- Для строковых значений:
- Символьные и битовые строки фиксированной длины: ЧАР , КУСОЧЕК
- Символьные и битовые строки переменной длины: ЧАР РАЗНОЙ , НЕМНОГО МЕНЯЕТСЯ
- Для значений даты и времени:
- значения даты: ДАТА
- временные значения: ВРЕМЯ
- значения даты и времени: ДАТАВРЕМЯ , TIMESTAMP (внутренне хранится как временная метка Unix )
- Для коллекций: НАБОР , МУЛЬТИСЕТ , СПИСОК
- Определенные пользователем перечисления : ЕНУМ
- Для крупных объектов: БЛОБ , КЛОБ
- Для обозначения объектов JavaScript: JSON
Поддерживаемые платформы
[ редактировать ]CUBRID доступен для Microsoft Windows и Linux (большинство дистрибутивов), для 32- и 64-битных архитектур.
Интерфейсы
[ редактировать ]Командная строка
[ редактировать ]CUBRID поставляется со встроенным интерфейсом командной строки csql , который можно использовать для выполнения операторов SQL на сервере CUBRID. [9] Инструмент может использоваться в одном из двух режимов:
- Режим CS ( клиент/сервер ), который может подключаться к локальным или удаленным серверам CUBRID.
- Режим SA ( автономный ), используемый в основном в целях администрирования, при котором локальная база данных монтируется путем эмуляции экземпляра сервера.
CUBRID csql также реализует некоторые внутренние команды, связанные с информацией о схеме, генерацией плана, отладкой, контролем транзакций, синхронизацией запросов и многим другим.
Программирование
[ редактировать ]CUBRID предоставляет ряд интерфейсов прикладного программирования для конкретного языка : [10] Драйвер C (также называемый CCI , собственный драйвер CUBRID), JDBC , PHP драйвер /PDO, ODBC , OLEDB , ADO.NET , Ruby драйвер , драйвер Python , драйвер Node.js и драйвер Perl .
Графический
[ редактировать ]несколько инструментов графического интерфейса пользователя Для CUBRID было разработано :
- КУБРИД Менеджер [11] — это браузер запросов и инструмент администрирования баз данных, распространяемый по лицензии BSD на macOS и Linux.
- CUBRID Admin — это инструмент администрирования, распространяемый по лицензии BSD для Windows.
- SQLGate — это инструмент браузера запросов, разработанный CHECKER для Windows.
- Набор инструментов для миграции CUBRID [12] это инструмент, который позволяет мигрировать данные из Oracle, MS-SQL, MySQL и предыдущих версий баз данных CUBRID на новейший сервер баз данных CUBRID.
История выпусков
[ редактировать ]Версия | Дата выпуска | Дата выхода бета-версии | Дополнения |
---|---|---|---|
11.0 | январь 2021 г. | Безопасность: TDE (Прозрачное шифрование данных) и другие. [13] | |
10.2 | декабрь 2019 г. | Новый тип данных: JSON (нотация объектов JavaScript) и другие. [14] | |
10.1 | июль 2017 г. | Включает полезные расширения SQL: CTE (Общие табличные выражения) и другие. [15] | |
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, заметная оптимизация производительности, охват индекса [16] [17] |
3.1 | 31 декабря 2010 г. | 12 ноября 2010 г. | Поддержка BLOB и CLOB , поддержка мониторинга высокой доступности, улучшения драйверов (JDBC, ODBC и CUBRID C API). [18] |
3.0 | 4 октября 2010 г. | 19 июля 2010 г. | Расширения SQL, улучшения высокой доступности [19] [20] |
2.2 | 30 апреля 2010 г. | Улучшения высокой доступности, улучшения API CUBRID C, некоторые улучшения производительности. [21] | |
2.1 | декабрь 2009 г. | ||
2.0 | август 2009 г. | ||
1.4 | Март, 2009 г. | ||
1.3 | февраль 2009 г. | ||
1.2 | Январь 2009 г. | ||
1.1 | ноябрь 2008 г. | CUBRID стал проектом с открытым исходным кодом. | |
1.0 | Октябрь 2008 г. | Первый стабильный выпуск |
Приложения
[ редактировать ]Некоторые приложения и веб-сайты, в которые добавлена поддержка CUBRID или которые работают на базе CUBRID:
- jOOQ [22]
- Статистика СОФА [23]
- КАК [24]
- ИСКУССТВО [25]
- Скриптелла
- JWhoisServer [26]
- PHP-фреймворк Yii2 [27]
- RedBeanPHP [28]
- ДБивер [29]
См. также
[ редактировать ]- Сравнение систем управления реляционными базами данных
- Сравнение объектно-реляционных систем управления базами данных
- Список систем управления реляционными базами данных
Ссылки
[ редактировать ]- ^ «КУБРИД Релиз» . Гитхаб . Проверено 21 мая 2020 г.
- ^ «Лицензия КУБРИД» .
- ^ «КУБРИДА» . 22 мая 2020 г. Проверено 27 мая 2020 г.
- ^ «Кэширование общего плана запроса в CUBRID» . Архивировано из оригинала 22 июня 2014 года . Проверено 9 февраля 2013 г.
- ^ «Руководство по CUBRID — Счетчик кликов CUBRID» . Архивировано из оригинала 14 февраля 2013 года . Проверено 11 февраля 2013 г.
- ^ «Хранимые процедуры Java CUBRID» . Архивировано из оригинала 14 февраля 2013 года . Проверено 11 февраля 2013 г.
- ^ «Руководство по CUBRID — Условные выражения REGEXP/RLIKE» . Архивировано из оригинала 4 июня 2013 года . Проверено 11 февраля 2013 г.
- ^ «Руководство по CUBRID 11 — Функции и операторы регулярных выражений» .
- ^ «Как использовать утилиты CSQL» . Архивировано из оригинала 14 февраля 2013 года . Проверено 8 февраля 2013 г.
- ^ «Вики API CUBRID» . Архивировано из оригинала 26 июня 2014 года . Проверено 8 февраля 2013 г.
- ^ «КУБРИД Менеджер» . Архивировано из оригинала 16 января 2013 года . Проверено 8 февраля 2013 г.
- ^ «Набор инструментов для миграции CUBRID» . Архивировано из оригинала 10 февраля 2013 года . Проверено 8 февраля 2013 г.
- ^ «CUBRID 11.0 выпущен» . 27 января 2021 г. Проверено 2 февраля 2021 г.
- ^ «Выпущена версия CUBRID 10.2» . 20 марта 2020 г. Проверено 21 мая 2020 г.
- ^ «CUBRID 10.1 выпущен» . 20 марта 2020 г. Проверено 21 мая 2020 г.
- ^ «Вышла версия CUBRID 8.4.0 с движком базы данных, в два раза более быстрым!» . Архивировано из оригинала 20 мая 2011 г. Проверено 17 мая 2011 г.
- ^ «CUBRID 8.4.0 GA теперь доступен для загрузки» . Архивировано из оригинала 25 августа 2011 г. Проверено 14 июля 2011 г.
- ^ «Стабильная версия CUBRID 3.1 теперь доступна!» . Архивировано из оригинала 7 января 2011 г. Проверено 3 января 2011 г.
- ^ «CUBRID 3.0 Stable прибыл!» . Архивировано из оригинала 8 октября 2010 г. Проверено 5 октября 2010 г.
- ^ «Выпущена новая бета-версия CUBRID 2008 R3.0» . Архивировано из оригинала 27 августа 2011 г. Проверено 21 июля 2010 г.
- ^ «Выпуск новой версии — CUBRID 2008 R2.2» . Архивировано из оригинала 25 июля 2011 г. Проверено 7 мая 2010 г.
- ^ «Как моделировать расширения операторов MySQL INSERT» . Лукас Эдер. 15 мая 2012 г. Проверено 4 февраля 2013 г.
- ^ «Статистика СОФА» . www.sofastatistics.com. 20 ноября 2012 г. Проверено 17 ноября 2010 г.
- ^ «Невероятно простой и интуитивно понятный веб-клиент SIDU SQL» . СИДУ. 25 мая 2012 г. Проверено 4 февраля 2013 г.
- ^ «Простой, но эффективный инструмент отчетности с открытым исходным кодом ART» . art.sourceforge.net. 10 июня 2012 г. Проверено 4 февраля 2013 г.
- ^ «Запустите свой собственный Whois-сервер с помощью JWhoisServer» . Клаус Цервес. 6 июля 2012 г. Проверено 4 февраля 2013 г.
- ^ «Построитель запросов Cubrid» . yii.com . Проверено 20 марта 2015 г.
- ^ «RedBeanPHP: очень простой в использовании PHP ORM» . Архивировано из оригинала 29 марта 2013 г. Проверено 4 февраля 2013 г.
- ^ «DBeaver 4.2.5» . Проверено 27 мая 2020 г.