CrateDB

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 14:31, 17 сентября 2018.
Версия от 14:31, 17 сентября 2018; michael shturov (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
CrateDB
Crate.png
Разработчики: Crate.io, Inc.
Написана на: Java
Операционная система: Кросс-платформенная
Тип ПО: [СУБД]
Лицензия: Apache License 2.0
Веб-сайт crate.io

CrateDB представляет собой распределенную систему управления базами данных SQL (Structured Query Language), которая объединяет полностью доступную для поиска документа-ориентированную базу данных.[Источник 1] Она является открытым исходным кодом, написанным на Java, основанной на архитектуре без общего доступа и предназначена для высокой масштабируемости и включает в себя компоненты от Facebook Presto, Apache Lucene, Elasticsearch и Netty.


История

Проект CrateDB был запущен Jodok Batlogg, автором и создателем открытого исходного кода, который внес вклад в OSIV (англ. Open Source Initiative Vorarlber), а в Lovely Systems в Дорнбирне. Программное обеспечение представляет собой кластерную базу данных с открытым исходным кодом, используемую для быстрого текстового поиска и аналитики. Компания, теперь называемая Crate.io, подняла свой первый раунд финансирования в апреле 2014 года, раунд в 4 миллиона долларов в марте 2016 года и 2,5 миллиона долларов в январе 2017 года от Dawn Capital, Draper Esprit, Speedinvest и Sunstone Capital.

В июне 2014 года Crate.io выиграл номинацию "Выбор Жюри" на конкурсе GigaOm Structure Launchpad, а в октябре 2014 года они выиграли TechCrunch Disrupt Europe в Лондоне.

CrateDB 1.0 был выпущен в декабре 2016 года и, как сообщается, имел более миллиона загрузок. CrateDB 2.0 и Enterprise Edition были выпущены в мае 2017 года [Источник 2] [Источник 3].


Обзор

Язык CrateDB - это SQL, но он использует документоориентированый подход к базе данных в стиле NoSQL для документов. Программное обеспечение использует парсер SQL от Facebook Presto, собственный анализ запросов и распределенный механизм запросов. Elasticsearch и Lucene используются для определения транспортного протокола и кластера, а также для Netty для асинхронной среды сетевых приложений.

CrateDB предлагает автоматическую репликацию данных и самовосстанавливающиеся кластеры для обеспечения высокой доступности.

CrateDB включает встроенный интерфейс администрирования. Интерфейс командной строки (Crate Shell - CraSh) позволяет интерактивные запросы. Его клиент Python является самым передовым и имеет интеграцию SQLAlchemy.

В июне 2016 года Кайл Кингсбери проверил параллельность и последовательность согласования CrateDB 0.54, чтобы выявить несколько проблем с отказоустойчивостью из-за зависимостей от Elasticsearch. Он не рекомендует Crate в качестве основного хранилища, если действительно имеет значение каждая запись, но ведет записи в отдельной БД и использует Crate для быстрых запросов. Он представил свои результаты еще раз в апреле 2017 года во время основной презентации на конференции Scala Days.

Информационная безопасность

Защита ИТ-систем от угроз кибербезопасности является одним из самых популярных приложений CrateDB. CrateDB - это база данных кибербезопасности, которая объединяет механизм SQL в реальном времени, построенный на основе NoSQL. Это дает масштабируемость, производительность и аналитическую гибкость СУБД NoSQL, не жертвуя простотой использования и интеграции SQL.

CrateDB позволяет разработчикам SQL обрабатывать журналы и сетевой трафик в режиме реального времени или в больших объемах для поддержки широкого спектра случаев использования кибербезопасности. Вот несколько из систем кибербезопасности, которые питаются от CrateDB:

  • Skyhigh Networks - брокер безопасности доступа к облачным службам (CASB)
  • StackRox - адаптивная защита от угроз для контейнеров
  • Kryptos Logic - угроза и защита от угроз

Решения, подобные этим, включаются в функции базы данных Cyber ​​Security CrateDB:

  • Обработка множества точек данных в секунду

Эластичное масштабирование позволяет CrateDB получать данные на высоких скоростях на кластерах недорогих товарных серверов

  • Скорость запросов в реальном времени

Столбчатые индексы, полевые кэши обеспечивают производительность SQL в памяти в потоках данных сети или журнала

  • Текстовый поиск, IP-поля, AI, временные ряды

Динамические схемы и оптимизация для обработки широкого спектра данных и аналитики кибербезопасности

  • Постоянное включение

Встроенная репликация данных, распределение данных и балансировка кластера обеспечивают безостановочное обнаружение и защиту угроз

  • ANSI SQL
Легок в использовании для любого разработчика и интегрируется со стандартными источниками данных и визуализацией

Сравнение CrateDB

CrateDB - это распределенная база данных SQL, основанная на фундаменте NoSQL (для хранения, индексирования и создания сетей), и это лучше всего подходит, если вам нужно:

  • Обработка большого объема данных - миллионы вставок в секунду
  • Универсальность запросов - в режиме реального времени, временные ряды, геопространственный, текстовый поиск, AI
  • Универсальность данных - динамические схемы структурированных или неструктурированных данных
  • SQL - для удобства использования и интеграции без блокировки
  • Простая масштабируемость - легко создавать БД для обработки большего количества данных или пользователей

Вот сравнение высокого уровня CrateDB и других категорий базы данных:

Таблица сравнений

Основные особенности

Масштабируемая
Расширение базы данных должно быть простым, то легко реализовать с CrateDB. Автоматическая перебалансировка данных и архитектура без общего доступа позволяют просто масштабировать. Просто добавьте новые машины для создания и развития кластера CrateDB. Нет необходимости знать, как перераспределять данные в кластере, потому что CrateDB делает это за вас.
Распределенные SQL-запросы, накопление и поиск
Распределенный механизм запросов SQL CrateDB включает столбчатые полевые кэши и более современный планировщик запросов. Это дает CrateDB уникальную возможность выполнять агрегации, JOIN, подвыборки и специальные запросы со скоростью памяти. CrateDB также объединяет встроенные полнотекстовые функции поиска, которые позволяют хранить и запрашивать структурированные или неструктурированные данные вместе. Поэтому вам больше не нужно использовать отдельные базы данных SQL и Search для управления табличными и не табличными данными.
Высокая доступность
Даже если в дата-центре все пойдет не так, CrateDB продолжает работать. Автоматическая репликация данных по вашему кластеру и скользящие обновления программного обеспечения помогают избежать сбоев оборудования и планового обслуживания, не прерывая доступ к данным. Кроме того, кластеры CrateDB самовосстанавливаются, поэтому, когда узлы добавляются в кластер, CrateDB автоматически загружает их с данными.
Прием данных в режиме реального времени
Аналитические данные часто загружаются партиями, транзакционными замками и другими накладными расходами. В отличие от этого, CrateDB устраняет блокировку накладных расходов, чтобы обеспечить массовую производительность записи (например, 40 000 + вставки в секунду на узел на товарном оборудовании). Кроме того, CrateDB может обеспечить производительность запросов на миллисекунду, даже когда записи находятся в действии.
Любые данные и BLOB
CrateDB поддерживает как реляционные данные, так и вложенные JSON-документы. Все вложенные атрибуты JSON могут быть включены в любую команду SQL. Кроме того, CrateDB предоставляет хранилище BLOB, поэтому вы можете хранить и извлекать BLOB-файлы, такие как изображения, видео или большие неструктурированные файлы, предоставляя полностью распределенное кластерное решение для хранилища BLOB.
Анализ временных рядов
Данные временных рядов важны для выявления тенденций и аномалий. CrateDB позволяет быстро и легко анализировать временные ряды с помощью автоматических разделов таблицы, которые похожи на виртуальные таблицы, которые могут быть запрошены, перемещены или удалены. Разделение данных по временным интервалам обеспечивает очень быструю работу с запросами времени.
Геопространственные запросы
Местоположение важно для многих анализов машинных данных. По этой причине CrateDB может хранить и запрашивать географическую информацию с использованием типов geo_point и geo_shape. Вы можете контролировать точность и разрешение географического индекса для получения более быстрых результатов запроса, а также выполнять точные запросы со скалярными функциями, такими как пересечения, внутри и на расстоянии.
Динамические схемы
В отличие от многих других баз данных SQL, схемы CrateDB полностью гибкая. Есть возможность добавлять столбцы в любое время без замедления производительности или простоев. Это отлично подходит для гибкого развития и быстрого развертывания.
Поддержка транзакций
CrateDB согласован, но предлагает транзакционную семантику. CrateDB согласован на уровне строк, поэтому каждая строка либо полностью написана, либо нет. Предлагая согласованность после записи, разрешается синхронный доступ в режиме реального времени к одиночным записям сразу после их написания. Несмотря на то, что CrateDB не поддерживает транзакции ACID с откатами и т.д., он предлагает оптимистичный контроль параллелизма, предоставляя внутреннее управление версиями, что позволяет обнаруживать и разрешать конфликты записи.
Резервные копии
CrateDB может сохранять инкрементные снимки базы данных на хранение. Снимки содержат состояние таблиц в кластере CrateDB во время создания моментального снимка и могут быть восстановлены в кластере в любое время.
Открытость и гибкость
Есть возможность запустить CrateDB в любом месте, как в центре обработки данных, так и в облаке.

Примеры использования

Резервное копирование и восстановление баз данных

Хранилища могут храниться в общих файловых системах, доступных для всего кластера, hdfs или URL-адреса репозитория только для чтения, доступного для нескольких протоколов. Для создания общего хранилища файловой системы требуется несколько шагов.

  • Настройка

Добавьте в config/crate.yml:

path.repo: /crate/repos, /repos

Подключитесь к кластеру Crate с помощью инструмента Crash cli и создайте репозиторий для хранения снимков, изменения my_snapshots и location соответствующих значений для вашего кластера:

create repository my_snapshots type fs with (location='crate_db', compress=true); 
  • Создание резервной копии
CREATE SNAPSHOT my_snapshots.snapshot1 ALL WITH (wait_for_completion=true);
  • Восстановление резервной копии
DROP TABLE TABLE_NAME;
RESTORE SNAPSHOT my_snapshots.snapshot1 TABLE TABLE_NAME WITH (wait_for_completion=true);

Установка на Ubuntu

Установка CrateDB на Ubuntu:

Шаг 1: Загрузка

Загружаем файлы:

$ wget https://cdn.crate.io/downloads/deb/DEB-GPG-KEY-crate
$ sudo apt-key add DEB-GPG-KEY-crate

Открываем директорию /etc/apt/sources.list.d/ и добавляем новый файл:

$ deb https://cdn.crate.io/downloads/deb/<repo>/ <codename> main
$ deb-src https://cdn.crate.io/downloads/deb/<repo>/ <codename> main

Поменяйте <repo> на testing или stable в зависимости от ваших целей.

Далее устанавливаем необходимы для настройки инструменты:

$ sudo apt-get install python-software-properties
$ sudo apt-get install software-properties-common 

Обновляем список ресурсов и загружаем основной файл:

$ sudo add-apt-repository ppa:crate/stable 
$ sudo apt-get update
$ sudo apt-get install crate

Шаг 2: Запуск и Остановка

CrateDB должен быть запущен автоматически. Вы можете остановить или перезапустить crate службу с помощью upstart/sysvinit или с помощью systemd :

  • с помощью upstart/sysvinit  :
$ sudo service crate stop
$ sudo service crate restart
  • с помощью systemd :
$ sudo systemctl stop crate
$ sudo systemctl restart crate

Установка на Windows и использование с Grafana:

CrateDB - отличный источник данных для Grafana. Плагин Crate для CrateDB для Grafana делает возможным их совместное использование. Плагин позволяет кластерам CrateDB действовать как источники данных для развертывания Grafana, предоставляя аналитические и временные данные в реальном времени с SQL.

Установка на Windows и настройка CrateDB с Grafana:

Шаг 1: Загрузка

Загружаем файлы с сайта разработчика, докачиваем и устанавливаем требуемый для работы под Windows Java8.

Шаг 2: Запуск и использование

Распаковываем полученный архив в папку с достаточными правами доступа. Запускаем через командную строку исполняемый файл crate из папки bin. Дождавшись окончания запуска становится доступен веб-интерфейс пользователя. На локальной машине по умолчанию адрес - localhost:4200.

Шаг 3: Настройка CrateBD как источника данных в Grafana с использованием плагина Crate

Для совместного использования CrateBD и Grafana потребуется плагин Crate.

Требования для использования плагина
  • Grafana > 3.x.x
  • CrateDB (все стабильные версии поддерживаются этим плагином на данный момент)

При использовании на локальной машине необходимо разместить файлы плагина в папке "plugins". При использовании на сервере достаточно добавить плагин в библиотеку.

Настройка
  • Нажать на значок Grafana в левом верхнем углу веб-интерфеса
  • В открывшемся меню выбрать Data Sources
  • Выбрать + Add data source
Источник данных CrateDB

В открывшемся окне выбрать «Crate» из списка поля «Type».

Значение других значимых полей
Имя поля Описание поля
Name Имя источника данных
Default Установить этот источник данных по умолчанию для новых панелей
Url Url узла в кластере CrateDB
Access Способ соединения
Basic Auth Включить базовую аутентификацию (доступно только через прокси NGINX в CrateDB).
Schema Имя CrateDB для запроса
Table Таблица для извлечения данных
Time column Столбец временного ряда, должен быть типа «timestamp» в CrateDB
Check Query source Проверить корректность заполнения полей Table и Time column средствами Grafana
Default grouping interval Частота группировки(может быть изменена)

Примечания

  1. CrateDB // Википедия. [2018-2018] Дата обновления:15.02.2018. URL:https://en.wikipedia.org/wiki/CrateDB (дата обращения: 15.10.2017)
  2. Информация о CrateDB// Официальный сайт проекта [2018-2018] Дата обновления 15.02.2018. URL:https://crate.io/overview/ (дата обращения: 14.10.2017)
  3. Руководство пользователя// Сайт проекта. [2018-2018] Дата обновления 15.02.2018. URL:https://crate.io/docs/ (дата обращения: 14.10.2017)