Кубрид - CUBRID - Wikipedia

Кубрид
CUBRID RDBMS Logo.png
Разработчики)CUBRID Corp.
изначальный выпуск20 ноября 2008 г. (2008-11-20)
Стабильный выпуск
10.2 / декабрь 2019; 1 год назад (2019-12)[1]
Репозиторийgithub.com/ CUBRID/ кубрид
Написано вC, C ++, Ява
Операционная системаLinux, Windows
Доступно вАнглийский, корейский
ТипСУБД
ЛицензияСтандартная общественная лицензия GNU для Server Engine и BSD лицензия на API и инструменты GUI
Интернет сайткубрид.org

Кубрид (/ˈkjuːбрɪd/ "cube-rid") - это Открытый исходный код На основе SQL система управления реляционной базой данных (RDBMS) с расширениями объектов, разработанными CUBRID Corp. для OLTP. Название CUBRID - это комбинация двух слов куб и мост, куб означает место для данных и мост стоя для мост данных.[нужна цитата ]

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

CUBRID имеет отдельную лицензию на серверный движок и интерфейсы. Серверный движок использует GPL v2.0 или более поздняя лицензия, которая разрешает распространение, изменение и приобретение исходного кода. Кубрид API и инструменты GUI имеют Распространение программного обеспечения Беркли лицензия, в которой нет обязательства открывать производные работы. Причина принятия двух отдельных систем лицензирования - предоставить полную свободу Независимые поставщики программного обеспечения (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 + -дерево индексы, как с одним, так и с несколькими столбцами. Могут быть созданы следующие типы индексов:

  • Индексы и обратные индексы
  • Уникальные индексы и обратные уникальные индексы
  • Индексы на основе функций
  • Отфильтрованные индексы

В оптимизатор запросов может использовать индексы для создания более быстрых планов выполнения, используя такие методы, как:

  • Идентификация индексы покрытия
  • Просмотр индекса по убыванию
  • ЗАКАЗАТЬ Пропустить
  • GROUP BY пропустить
  • Оптимизация пределов нескольких диапазонов[нужна цитата ]
  • Индекс Свободное сканирование
  • Индекс Пропустить сканирование

Разделение таблицы

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

Начиная с версии 9.0, CUBRID реализует раздел времени выполнения обрезка.

Поддержка SQL

CUBRID реализует большое подмножество ANSI SQL: 1999 стандартный, расширенный функциями из более поздних стандартов SQL и пользовательскими функциями.[нужна цитата ]

Оконные функции

CUBRID обеспечивает поддержку оконные функции как определено в SQL: 2003 стандарт. Реализованные функции: ROW_NUMBER, СЧИТАТЬ, MIN, МАКСИМУМ, СУММ, AVG, STDDEV_POP, STDDEV_SAMP, VAR_POP, VAR_SAMP, КЛАССИФИЦИРОВАТЬ, DENSE_RANK, ВЕСТИ, LAG и НТИЛЬ.

Иерархические запросы

Иерархические запросы используя нестандартные НАЧАТЬ С ... ПОДКЛЮЧИТЬСЯ Oracle синтаксис поддерживается в CUBRID. Предоставляется ряд специализированных псевдостолбцов и операторов для управления поведением выполнения запроса.

Встроенный счетчик кликов

CUBRID оптимизирует общий сценарий в веб-приложениях, когда поля базы данных должны увеличиваться при определенных событиях (например, просмотрах страниц). В отличие от обычного подхода, использующего комбинацию операторов SELECT / UPDATE, CUBRID может увеличивать поля внутри выполнения оператора SELECT, минуя некоторые дорогостоящие накладные расходы на компиляцию, выполнение и блокировку, связанные с оператором UPDATE.[5]

Хранимые процедуры Java

Единственный хранимая процедура язык, поддерживаемый в CUBRID: Ява, требуя Виртуальная машина Java для установки в системе.[6]Виртуальная машина запускается и управляется сервером и используется для выполнения кода.

Код хранимой процедуры, требующий доступа к базе данных, должен использовать JDBC драйвер, либо используя родительскую транзакцию, либо выпуская новую.

Регулярное выражение

В дополнение к оператору LIKE, CUBRID предоставляет оператор REGEXP для регулярное выражение сопоставление с образцом. По умолчанию оператор выполняет без учета регистра соответствие во входной строке, но модификатор BINARY может использоваться для чувствительный к регистру сценарии. Необязательный псевдоним REGEXP - RLIKE.[7]

В настоящее время CUBRID не поддерживает REGEXP на Unicode струны.[нужна цитата ]

Типы данных

Разнообразие типы данных CUBRID поддерживает:

  • Для числовых значений:
  • Для строковых значений:
    • символьные и битовые строки фиксированной длины: СИМВОЛ, КУСОЧЕК
    • символьные и битовые строки переменной длины: CHAR VARYING, БИТНОЕ ИЗМЕНЕНИЕ
  • Для значений даты и времени:
    • значения даты: ДАТА
    • значения времени: ВРЕМЯ
    • значения даты и времени: ДАТА ВРЕМЯ, TIMESTAMP (внутренне хранится как Отметка времени Unix )
  • Для коллекций: НАБОР, МУЛЬТИСЕТ, СПИСОК
  • Определяемые пользователем перечисления: ENUM
  • Для крупных объектов: BLOB, CLOB
  • Для обозначения объектов JavaScript: JSON

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

CUBRID доступен для Майкрософт Виндоус и Linux (большинство дистрибутивов), для 32- и 64-битных архитектур.

Интерфейсы

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

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

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

КУБРИДА csql также реализует некоторые внутренние команды, связанные с информацией о схеме, созданием плана, отладкой, управлением транзакциями, синхронизацией запросов и т. д.

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

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

Графический

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

  • CUBRID Manager[10] это браузер запросов и инструмент администрирования баз данных, распространяемый под Лицензия BSD в macOS и Linux.
  • CUBRID Admin - это инструмент администрирования, распространяемый под Лицензия BSD в Windows.
  • SQLGate - это инструмент браузера запросов, разработанный CHECKER для Windows.
  • Набор средств миграции CUBRID[11] это инструмент, который позволяет переносить данные из Oracle, MS-SQL, MySQL и предыдущих версий баз данных CUBRID на последний сервер баз данных CUBRID.

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

ВерсияДата выходаДата выпуска бета-версииДополнения
10.2Декабрь 2019 г.Новый тип данных: JSON (JavaScript Object Notation) и другие.[12]
10.1Июль 2017 г.Включает полезные расширения SQL: CTE (общие табличные выражения) и другие.[13]
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.320 ноября 2012 г.Шардинг базы данных, Балансировка нагрузки на уровне API, встроенный веб-менеджер с поддержкой мониторинга
8.4.124 февраля 2012 г.1 февраля 2012 г.Важные оптимизации производительности, расширения SQL, оператор REGEXP.
8.4.01 июля 2011 г.12 мая 2011 г.Улучшения высокой доступности, улучшения CUBRID C API, заметная оптимизация производительности, охват индекса[14][15]
3.131 декабря 2010 г.12 ноября 2010 г.BLOB и CLOB поддержка, поддержка мониторинга высокой доступности, улучшения драйверов (JDBC, ODBC и CUBRID C API)[16]
3.04 октября 2010 г.19 июля 2010 г.Расширения SQL, улучшения высокой доступности[17][18]
2.230 апреля 2010 г.Улучшения высокой доступности, улучшения CUBRID C API, некоторые улучшения производительности[19]
2.1Декабрь 2009 г.
2.0Август 2009 г.
1.4Март 2009 г.
1.3Февраль 2009 г.
1.2Январь 2009 г.
1.1Ноябрь 2008 г.CUBRID стал проектом с открытым исходным кодом
1.0Октябрь 2008 г.Первый стабильный выпуск

Приложения

Некоторые приложения и веб-сайты, которые добавили поддержку CUBRID или работают на CUBRID:

Смотрите также

Рекомендации

  1. ^ "CUBRID Release". Получено 21 мая 2020.
  2. ^ «Лицензия CUBRID». Архивировано из оригинал 16 января 2013 г.. Получено 8 февраля 2013.
  3. ^ "КУБРИДА". Получено 2020-05-27.
  4. ^ «Кэширование общего плана запроса в CUBRID». Архивировано из оригинал 22 июня 2014 г.. Получено 9 февраля 2013.
  5. ^ "Руководство CUBRID - Счетчик кликов CUBRID". Архивировано из оригинал 14 февраля 2013 г.. Получено 11 февраля 2013.
  6. ^ "Хранимые процедуры CUBRID Java". Архивировано из оригинал 14 февраля 2013 г.. Получено 11 февраля 2013.
  7. ^ "Руководство CUBRID - Условные выражения REGEXP / RLIKE". Архивировано из оригинал 4 июня 2013 г.. Получено 11 февраля 2013.
  8. ^ «Как использовать утилиты CSQL». Архивировано из оригинал 14 февраля 2013 г.. Получено 8 февраля 2013.
  9. ^ "CUBRID APIs Wiki". Архивировано из оригинал 26 июня 2014 г.. Получено 8 февраля 2013.
  10. ^ «КУБРИД Менеджер». Архивировано из оригинал 16 января 2013 г.. Получено 8 февраля 2013.
  11. ^ «Набор средств миграции CUBRID». Архивировано из оригинал 10 февраля 2013 г.. Получено 8 февраля 2013.
  12. ^ "Выпущен CUBRID 10.2". Получено 2020-05-21.
  13. ^ «Выпущен CUBRID 10.1». Получено 2020-05-21.
  14. ^ "CUBRID 8.4.0 прибыл с ядром базы данных в 2 раза быстрее!". Архивировано из оригинал на 2011-05-20. Получено 2011-05-17.
  15. ^ «CUBRID 8.4.0 GA теперь доступен для загрузки». Архивировано из оригинал на 2011-08-25. Получено 2011-07-14.
  16. ^ "CUBRID 3.1 Stable теперь доступен!". Архивировано из оригинал на 2011-01-07. Получено 2011-01-03.
  17. ^ "CUBRID 3.0 Stable прибыл!". Архивировано из оригинал на 2010-10-08. Получено 2010-10-05.
  18. ^ «Выпущена новая бета-версия CUBRID 2008 R3.0». Архивировано из оригинал на 2011-08-27. Получено 2010-07-21.
  19. ^ «Выпуск новой версии - CUBRID 2008 R2.2». Архивировано из оригинал на 2011-07-25. Получено 2010-05-07.
  20. ^ «Как имитировать расширения инструкции MySQL INSERT». Лукас Эдер. 2012-05-15. Получено 2013-02-04.
  21. ^ «СОФА Статистика». sofastatistics.com. 2012-11-20. Получено 2010-11-17.
  22. ^ «SIDU Невероятно простой интуитивно понятный веб-клиент SQL». SIDU. 2012-05-25. Получено 2013-02-04.
  23. ^ «ART Простой, но эффективный инструмент отчетности с открытым исходным кодом». art.sourceforge.net. 2012-06-10. Получено 2013-02-04.
  24. ^ «Запустите свой собственный сервер Whois с JWhoisServer». Клаус Зервес. 2012-07-06. Получено 2013-02-04.
  25. ^ «Конструктор запросов Cubrid». yii.com. Получено 2015-03-20.
  26. ^ "RedBeanPHP Супер простой в использовании PHP ORM". Архивировано из оригинал на 2013-03-29. Получено 2013-02-04.
  27. ^ «DBeaver 4.2.5». Получено 2020-05-27.

внешняя ссылка