SQream DB

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 16:00, 18 ноября 2017.
SQream DB
SQream Logo.png
Разработчики: SQream Technologies Ltd.
Выпущена: 2014
Постоянный выпуск: 1.17
Состояние разработки: Active
Написана на: CUDA, C++, Haskell
Операционная система: Linux
Локализация: English
Тип ПО: RDBMS
Веб-сайт sqream.com

SQream DB - это система управления реляционными базами данных (RDBMS), которая использует графические процессоры (графические процессоры) от Nvidia . SQream DB предназначен для большой аналитики данных с использованием языка структурированных запросов (SQL). [Источник 1]

Создание

SQream DB - первый продукт SQream Technologies Ltd, основанный в 2010 году Ами Гал и Костей Варакиным в Тель-Авиве , Израиль.

SQream DB был впервые выпущен в 2014 году после партнерства с Orange SA в Силиконовой долине. Компания заявила, что Orange SA сэкономила 6 миллионов долларов США, используя SQream в 2014 году. SQream DB нацелена на бюджетный рынок с несколькими терабайтами, из-за его скромных требований к оборудованию и использования сжатия.

SQream DB также является основой для продукта с именем GenomeStack для одновременного запроса многих последовательностей DNA. Инвестиции венчурного капитала в размере 7.4 млн. долл. были объявлены в июне 2015 года. Это пример универсальных вычислений на графических процессорах с конкурентами MapD Technologies и Kinetica.

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

Назначение

SQream DB - мощная аналитическая база данных SQL, использующая мощь тысяч параллельных процессорных ядер в графических процессорах NVIDIA (графические процессоры). Решение с несколькими GPU позволяет пользователям легко загружать, хранить и анализировать от десятков до сотен терабайт данных. Результатом является сила и гибкость при исследовании и анализе больших данных.[Источник 2]

База данных GPU SQream доказала свои результаты в сокращении времени выхода на рынок для отчетов, BI, информационных панелей, данных и рабочих нагрузок AI. Использование непрерывного сжатия и «умных метаданных» позволяет уменьшить узкие места ввода-вывода и уменьшить дисковое пространство. SQream DB может легко обрабатывать большие наборы данных, растущие до петабайт, с легким масштабированием хранилища. Это позволяет использовать специальные запросы, гибкость в запросе и быстрое время отклика на бизнес-потребности. Поскольку SQream DB теперь также работает на AWS, компании могут анализировать большие наборы данных, не инвестируя в дорогую инфраструктуру. Глобальные предприятия используют SQream DB для анализа большего количества данных, чем когда-либо прежде. SQream DB обеспечивает ускорение бизнес-аналитики для интеллектуального, информированного, принятия решений в режиме реального времени, основанного на больших наборах данных.

Характеристики SQream DB

Устройство SQream DB

Устройство SQream DB

Кластер хранения хранилищ SQream - это совокупность всех сохраненных объектов:[Источник 3]

  1. Базы данных
  2. Схемы
  3. Таблицы
  4. Колонны
  5. Роли

Базы данных

У кластера хранения может быть много баз данных, находящихся в нем. Когда вы создаете аппликативное соединение (от клиента или JDBC / ODBC), вы подключаетесь к одной базе данных. База данных может иметь много схем и таблиц. Чтобы просмотреть существующие базы данных, запросите каталог (информационную схему).

Запрос каталога SQream

Каталог SQream DB или информационная схема состоит из представлений, содержащих информацию обо всех объектах базы данных. Это обеспечивает доступ к метаданным базы данных, типам столбцов, таблицам и их количеству строк и т. д. Каталог доступен из любой базы данных по схеме sqream_catalog . Вы можете запросить схему, как и любую другую таблицу в системе.

demo_db => SELECT * from sqream_catalog . tables ;
Результат для демонстрационной БД

Схемы

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

Схема SQream DB

Таблицы

В SQream DB таблица представляет собой набор элементов данных, организованных в горизонтальные строки и вертикальные столбцы. Таблица имеет определенное количество столбцов, но может иметь любое количество строк.

Пример:

Пример таблицы "Клиенты"

В базе данных, ориентированной на ряд, будет храниться как: 1,John,1997-01-01 15:30:30 ; 2,Jane,1998-05-06 00:00:00; ...

В столбчатой ​​базе данных будет храниться как: 1,2,3,4,5 ; John,Jane,Sam,David,Susan ; 1997-01-01 15:30:30,1998-05-06 00:00:00,1956-06-02 14:31:00,2006-12-25 14:40:00,1975-10-21 02:20:00

Колонны

В SQream DB столбец является элементом, составляющим таблицу. Каждый столбец имеет определенный тип и имя, которые не меняются. Физически организуя данные по столбцам, SQream DB способен быстрее сканировать и агрегировать данные для отдельных столбцов, поскольку меньше данных нужно читать. Это делает колонки очень подходящими для аналитических рабочих нагрузок.

Роли

SQream управляет пользователями по ролям . CREATE ROLE добавляет новую роль / пользователя в текущий кластер. Когда ROLE используется в качестве ПОЛЬЗОВАТЕЛЯ, он должен быть предоставлен с паролем, с логином и с привилегией подключения к соответствующим базам данных в кластере.

CREATE ROLE new_role_name ; GRANT LOGIN TO new_role_name ; GRANT PASSWORD 'my_password' TO new_role_name ; GRANT CONNECT ON DATABASE master TO new_role_name ;

DROP ROLE удаляет роль / пользователя из текущего кластера.

drop role admin ;

ALTER ROLE может использоваться для переименования существующей роли.

ALTER ROLE admin RENAME TO admin_copy ;

Куски, сжатие и метаданные

Куски

SQream DB разбивает столбчатые данные на куски. Размер куска будет минимальной объемной нагрузкой на GPU. Для лучшей производительности SQream DB переставляет ранее загруженные данные в новые куски на основе требуемого размера блока . При загрузке данных в SQream DB каждая объемная загрузка (либо INSERT INTO либо COPY ) будет генерировать собственные куски (с размерами до размера куска).

Размер блока - это параметр на уровне кластера, который должен быть установлен до первой вставки в кластер. Размер блока по умолчанию - 1 миллион строк. Параметр может быть установлен на уровне базы данных до создания любых таблиц. Для установки размера блока необходимо обратиться к администратору базы данных.

SQream DB, в свою очередь, перезапишет эти куски в желаемый размер блока. Во время повторной операции SQream будет переупорядочивать и повторно сжимать данные с использованием наиболее подходящего типа сжатия (в соответствии с типом данных и распределением данных).

Размер куска влияет на время загрузки / запроса. Перед настройкой параметра обратитесь к менеджеру SQream.

Характеристики сжатия

Когда указана спецификация сжатия DEFAULT (или отсутствие спецификации сжатия), каждый кусок может быть сжат в различных форматах, основываясь на понимании системы. Вы можете переопределить спецификацию сжатия, но это не рекомендуется.


Метаданные

SQream DB собирает и сохраняет информацию метаданных о данных колонок на уровне куска во время COPY . Эта информация будет служить оптимизатору SQream при выполнении пропусков данных и других оптимизаций. Эти метаданные собираются автоматически и прозрачно. Это не требует вмешательства пользователя.

Примеры работы с БД

CREATE DATABASE создаст новую базу данных в текущем наборе кластеров. Чтобы использовать новую базу данных, отключите и снова подключите новую базу данных.

 create database my_database ;

DROP DATABASE удалит базу данных и все ее файлы. Во время DROP DATABASE никакие другие операции DDL / DML не могут выполняться в базе данных, и последующие соединения с ним не удастся.

drop database my_database ;

CREATE SCHEMA создаст новую схему в текущей базе данных.

create schema my_schema ;

Измените схему по умолчанию для определенной роли. Чтобы изменить схему по умолчанию пользователя / роли по умолчанию для другого имени схемы, следует использовать схему Alter по умолчанию.

ALTER DEFAULT SCHEMA FOR user_a TO schema_a ;

CREATE TABLE создает новую таблицу в текущей базе данных по определенной схеме. Новые таблицы должны быть явно связаны с существующей схемой. В противном случае они будут неявно связаны с схемой PUBLIC по умолчанию.

create table t ( a bigint identity ( 1 , 1 ) CHECK ( 'CS "default"' ), b int ); create table my_schema . t ( a int null CHECK ( 'CS "p4d"' ), b int not null CHECK ( 'CS "dict"' ) ); create table u ( a int default 0 , b int , c date ); create table u ( k bigint not null identity , v varchar ( 10 ) CHECK ( 'CS "dict"' ) ); create table u ( k bigint not null identity ( 1 , 1 ), v varchar ( 10 ) ); create table t ( x int not null , y int default 0 not null )

ALTER TABLE используется для изменения структуры существующей таблицы.

ALTER TABLE my_table RENAME TO your_table ;

Существует возможность добавления нового столбца в существующую таблицу. Известные ограничения:

  1. При добавлении нового столбца в существующую таблицу необходимо указать значение по умолчанию (или значение nullability), даже если таблица пуста.
  2. Новый столбец не может содержать IDENTITY или NVARCHAR .
ALTER TABLE my_table ADD COLUMN new_supercool_column BIGINT default 1 ; -- Adds a new column of type nullable BIGINT, with default value of 1. 

ALTER TABLE my_table ADD COLUMN new_supercool_column BIGINT default 1 NOT NULL ; -- Adds a new column of type non-null BIGINT, with default value of 1. 

ALTER TABLE my_table ADD COLUMN new_date_col date default '2016-01-01' ; -- Adds a new column of type nullable date, with default date '2016-01-01'.

INSERT используется для добавления строк в таблицу.

INSERT INTO my_schema . dst1 SELECT a , b , c from src ; INSERT INTO dst2 ( d1 , d3 ) SELECT d1 , d3 from src ; INSERT INTO t ( cint , cint_2 ) VALUES ( 1 , 3 ); INSERT INTO t VALUES ( 1 , 3 );

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

При логическом удалении планируемый набор результатов для запросов не будет содержать удаленные данные. Однако данные, помеченные для удаления, физически не удаляются с диска.

При физическом удалении файлы , помеченные для удаления во время этапа логического удаления удаляются с диска. Это достигается путем вызова как функции полезности команды: CLEANUP_CHUNKS и CLEANUP_EXTENTS последовательно.

DELETE FROM books WHERE date_introduced < '2012-01-01' ; -- Delete all rows from 'books' table for books introduced before 2012 

DELETE FROM books ;  -- Clear the 'books' table completely:

SELECT CLEANUP_CHUNKS ( 'public' , 'books' ); -- Rearrange data on disk prior to physical deletion (SWEEP) 

SELECT CLEANUP_EXTENTS ( 'public' , 'books' ); -- Delete leftover files (VACUUM)

Сохранение запроса:

 select save_query ( 'q1' , $$select * from t where xint > ? AND xdatetime < ? AND xvarchar6 <> 'something'$$ )

Выполнение сохраненного запроса

 select execute_saved_query ( 'q1' , 1 , '2013-12-02 12:01:22' )

Источники

  1. SQream DB [Электронный ресурс] — Дата обращения: 20.10.2017. Режим доступа: https://en.wikipedia.org/wiki/SQream_DB
  2. SQream DB [Электронный ресурс] — Дата обращения: 20.10.2017. Режим доступа: https://sqream.com/sqream-technologies-launches-beta-of-gpu-database-sqream-db-on-aws-cloud/
  3. SQream DB Version 1.19 SQL Reference Guide [Электронный ресурс] — Дата обращения: 18.11.2017. Режим доступа: http://docs.sqream.com/latest/manual/sql_reference.html#_roles_users