Database
 sql >> база данни >  >> RDS >> Database

Въведение в TimescaleDB

TimescaleDB е база данни с отворен код, изобретена, за да направи SQL мащабируем за данни от времеви серии. Това е сравнително нова система за бази данни. TimescaleDB беше представен на пазара преди две години и достигна версия 1.0 през септември 2018 г. Независимо от това, той е проектиран върху зряла RDBMS система.

TimescaleDB е пакетиран като разширение PostgreSQL. Целият код е лицензиран под лиценза с отворен код Apache-2, с изключение на някои изходни кодове, свързани с корпоративните функции на времеви серии, лицензирани под Timescale License (TSL).

Като база данни с времеви серии, тя осигурява автоматично разделяне на дата и стойности на ключове. Поддръжката на SQL на TimescaleDB го прави добра опция за тези, които планират да съхраняват данни от времеви серии и вече имат солидни познания по SQL език.

Ако търсите база данни от времеви серии, която може да използва богат SQL, HA, солидно решение за архивиране, репликация и други корпоративни функции, този блог може да ви изведе на правилния път.

Кога да се използва TimescaleDB

Преди да започнем с функциите на TimescaleDB, нека видим къде може да се побере. TimescaleDB е проектиран да предложи най-доброто както от релационните, така и от NoSQL, с фокуса върху времевите серии. Но какво представляват данните от времевите серии?

Данните от времевите серии са в основата на Интернет на нещата, системите за наблюдение и много други решения, фокусирани върху често променящите се данни. Както подсказва името „времеви серии“, ние говорим за данни, които се променят с времето. Възможностите за такъв тип СУБД са безкрайни. Можете да го използвате в различни индустриални случаи на използване на IoT в сектора на производството, минното дело, петрол и газ, търговия на дребно, здравеопазване, мониторинг на разработчици или финансов информационен сектор. Също така може да се впише много в тръбопроводите за машинно обучение или като източник за бизнес операции и разузнаване.

Няма съмнение, че търсенето на IoT и подобни решения ще расте. С това казано, може да очакваме и необходимостта от анализиране и обработка на данни по много различни начини. Данните от времевите серии обикновено се добавят само - малко вероятно е да актуализирате стари данни. Обикновено не изтривате конкретни редове, от друга страна, може да искате някакво агрегиране на данните във времето. Ние не само искаме да съхраняваме как нашите данни се променят с времето, но и да анализираме и да се учим от тях.

Проблемът с новите типове системи за бази данни е, че те обикновено използват собствен език за заявки. Отнема време на потребителите да научат нов език. Най-голямата разлика между TimescaleDB и други популярни бази данни с времеви серии е поддръжката на SQL. TimescaleDB поддържа пълната гама от SQL функционалност, включително базирани на време агрегати, присъединявания, подзаявки, функции на прозорци и вторични индекси. Освен това, ако вашето приложение вече използва PostgreSQL, не са необходими промени в клиентския код.

Основи на архитектурата

TimescaleDB се изпълнява като разширение на PostgreSQL, което означава, че база данни с времеви мащаб работи в рамките на цялостен екземпляр на PostgreSQL. Моделът на разширение позволява на базата данни да се възползва от много от атрибутите на PostgreSQL, като надеждност, сигурност и свързаност с широк спектър от инструменти на трети страни. В същото време TimescaleDB използва високата степен на персонализиране, налична за разширенията, като добавя куки дълбоко в планирането на заявки, модела на данни и машината за изпълнение на PostgreSQL.

TimescaleDB архитектура

Хипертаблици

От гледна точка на потребителя данните на TimescaleDB изглеждат като единични таблици, наречени хипертаблици. Хипертаблиците са концепция или имплицитен изглед на много отделни таблици, съдържащи данните, наречени парчета. Данните на хипер таблицата могат да бъдат едно или две измерения. Тя може да бъде обобщена по времеви интервал и по (по избор) стойност на „ключ на дяла“.

На практика всички потребителски взаимодействия с TimescaleDB са с хипертаблици. Създаването на таблици, индекси, промяна на таблици, избор на данни, вмъкване на данни... трябва да се изпълняват в хипертаблицата.

TimescaleDB извършва това обширно разделяне както при разгръщания с един възел, така и при клъстерни разгръщания (в процес на разработка). Докато разделянето традиционно се използва само за мащабиране на множество машини, то също ни позволява да увеличим до високи скорости на запис (и подобрени паралелни заявки) дори на единични машини.

Поддръжка на релационни данни

Като релационна база данни, тя има пълна поддръжка за SQL. TimescaleDB поддържа гъвкави модели на данни, които могат да бъдат оптимизирани за различни случаи на употреба. Това прави Timescale малко по-различен от повечето други бази данни от времеви серии. СУБД е оптимизирана за бързо приемане и сложни заявки, базирани на PostgreSQL и когато е необходимо, имаме достъп до стабилна обработка на времеви серии.

Инсталиране

TimescaleDB, подобно на PostgreSQL, поддържа много различни начини за инсталиране, включително инсталиране на Ubuntu, Debian, RHEL/Centos, Windows или облачни платформи.

Един от най-удобните начини за игра с TimescaleDB е изображение на докер.

Командата по-долу ще изтегли изображение на Docker от Docker Hub, ако вече не е инсталирано, и след това ще го стартира.

docker run -d --name timescaledb -p 5432:5432 -e POSTGRES_PASSWORD=severalnines timescale/timescaledb

Първа употреба

Тъй като нашият екземпляр е готов и работи, е време да създадем нашата първа timescaledb база данни. Както можете да видите по-долу, ние се свързваме чрез стандартна конзола на PostgreSQL, така че ако имате PostgreSQL клиентски инструменти (напр. psql), инсталирани локално, можете да ги използвате за достъп до екземпляра на докер TimescaleDB.

psql -U postgres -h localhost
CREATE DATABASE severalnines;
\c severalnines
CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;

Ежедневни операции

От гледна точка както на използване, така и на управление, TimescaleDB просто изглежда и се чувства като PostgreSQL и може да бъде управляван и запитван като такъв.

Основните точки за ежедневни операции са:

  • Съществува съвместно с други TimescaleDBs и PostgreSQL бази данни на PostgreSQL сървър.
  • Използва SQL като език на интерфейса.
  • Използва общи PostgreSQL конектори към инструменти на трети страни за архивиране, конзола и т.н.

Настройки за TimescaleDB

Настройките на PostgreSQL обикновено са твърде консервативни за съвременните сървъри и TimescaleDB. Трябва да се уверите, че настройките на postgresql.conf са настроени, или като използвате timescaledb-tune, или го направите ръчно.

$ timescaledb-tune

Скриптът ще ви помоли да потвърдите промените. След това тези промени се записват във вашия postgresql.conf и ще влязат в сила при рестартирането.

Сега, нека да разгледаме някои основни операции от урока TimescaleDB, който може да ви даде представа как да работите с новата система за бази данни.

За да създадете хипертаблица, започвате с обикновена SQL таблица и след това я конвертирате в хипертаблица чрез функцията create_hypertable.

-- Create extension timescaledb
CREATE EXTENSION timescaledb;
Create a regular table
CREATE TABLE conditions (
  time        TIMESTAMPTZ       NOT NULL,
  location    TEXT              NOT NULL,
  temperature DOUBLE PRECISION  NULL,
  humidity    DOUBLE PRECISION  NULL
);

Преобразуването му в хипертаблица е просто като:

SELECT create_hypertable('conditions', 'time');

Вмъкването на данни в хипертаблицата се извършва чрез нормални SQL команди:

INSERT INTO conditions(time, location, temperature, humidity)
  VALUES (NOW(), 'office', 70.0, 50.0);

Избирането на данни е стар добър SQL.

SELECT * FROM conditions ORDER BY time DESC LIMIT 10;

Както можем да видим по-долу, можем да направим група по, подредени по и функции. В допълнение, TimescaleDB включва функции за анализ на времеви серии, които не присъстват в ванилия PostgreSQL.

SELECT time_bucket('15 minutes', time) AS fifteen_min,
    location, COUNT(*),
    MAX(temperature) AS max_temp,
    MAX(humidity) AS max_hum
  FROM conditions
  WHERE time > NOW() - interval '3 hours'
  GROUP BY fifteen_min, location
  ORDER BY fifteen_min DESC, max_temp DESC;

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Призма отношения

  2. Сортът, който се разлива до ниво 15 000

  3. SQL заявка за сравняване на продажбите на продукти по месеци

  4. Поднабор на база данни – Как да в IRI Voracity

  5. Потенциално подобрение за актуализации на статистиката:MAXDOP