AppSec & Pentest
CloudSec
CloudSec
  • Sandboxes, Containers, Virtualization
    • Какие бывают
    • Kubernetes
      • About
      • Tools
        • kubectl
        • minikube
        • helm
        • tiller
        • Others
      • Components
      • Concepts
      • Security
      • Learning
      • Conferences & Events
    • Container Runtime Interface (CRI)
      • containerd
      • CRI-0
      • Podman
      • Colima
      • Docker
        • About
        • CLI
        • Dockerfile
        • docker compose
        • Registry
        • Testcontainers
        • [Def] Security
        • [Off] Security
    • Red Hat OpenShift Container Platform (OCP)
      • About
      • OCP Components
        • Platform services
        • Application services
        • Developer services
        • OpenShift Kubernetes Engine
      • Security
        • Container Security
        • Podman
        • Kubernetes Security
        • Securing Platform Services
        • Vulnerabilities
        • CIS
    • VMWare
      • Workspace ONE Access
      • Workspace One UEM SSRF (AirWatch)
      • vSphere
      • vCenter
      • Learn
      • Horizon Security Server
      • VMWare log4j
    • Tools
      • Build container image inside containers
      • Moby
      • Security
  • Cloud
    • Google Cloud Platform (GCP)
      • GCP Components
      • GCP CLI
      • Security
        • Get access to GCP via service-account [json]
        • PrivEsc
        • Papers
      • Courses & Certifications
    • Azure
      • Azure Start
      • Azure CLI
      • Компоненты и механизмы
        • Azure Storage BLOB
        • Подписанные URL (SAS)
      • Papers and Resources
      • Azure Security Center
      • Tools
    • AWS
      • AWS Intro
      • AWS Basics
      • AWS Components
        • Computing
        • Storage
        • Messaging
        • Serverless
        • Business Productivity
        • Network and Content Delivery
        • Mobile
        • Databases
      • AWS Testing
      • Basic Work: Examples
        • AWS Cli
        • AWS SES
        • S3 Bucket
      • Security
        • Enumeration
        • AWS Lambda
        • Разные примеры
        • Learn Materials
      • Books & Papers
      • Courses & Certifications
    • Yandex Cloud
      • YC CLI
      • YC API
      • Cloud Organization
      • VM
        • Cloud Computing
        • Virtual Private Cloud (VPC)
        • Network Load Balancer
      • Data Platform
        • Definitions
        • Как выбрать БД
        • Реляционные БД
        • Нереляционные БД
        • Object Storage and S3
      • Yandex k8s
      • Serverless
      • Security
      • Billing
    • Another platforms
    • OpenStack
    • Tools
      • Tool list
      • Packer
      • Terraform
        • Intro
        • Getting started
        • Configuration
          • Basic
            • Terraform Block
            • Providers
            • Resources
            • Variables
            • Outputs
            • Functions
          • Modules
        • Security
        • Papers
    • Papers
Powered by GitBook
On this page
  • MongoDB
  • Redis
  • ClickHouse
  • Elasticsearch
  • YDB
  • Apache Kafka

Was this helpful?

  1. Cloud
  2. Yandex Cloud
  3. Data Platform

Нереляционные БД

PreviousРеляционные БДNextObject Storage and S3

Last updated 2 years ago

Was this helpful?

(материал с курса с Яндекс Практикума)

Нереляционные (NoSQL) БД обеспечивают высокую доступность, быстро работают и хорошо масштабируются. Однако зачастую это достигается за счет ограничения транзакционных возможностей, которыми славятся реляционные базы.

MongoDB

MongoDB — это масштабируемая документоориентированная СУБД с открытым исходным кодом, самая популярная NoSQL БД в мире. Данные в MongoDB не организуются в таблицы, как в реляционных БД, а хранятся в документах, которые группируются в коллекции. Это позволяет работать с данными с разными наборами полей: такие данные плохо укладываются в жёсткую структуру таблицы.

MongoDB позволяет размещать части БД на разных хостах (это называется шардированием), так что её легко масштабировать.

СУБД хранит данные в документах схожего с JSON формата, поэтому хорошо сочетается с JavaScript-фреймворками и широко применяется при разработке JavaScript-совместимых серверной и клиентской частей приложений. MongoDB входит в стек технологий MEAN (MongoDB, Express.js, Angular.js, Node.js).

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

Redis

Redis (Remote Dictionary Server) — хранилище данных типа key-value (ключ-значение) с открытым исходным кодом.

В key-value хранилище хранятся пары ключей и значений. Ключ в паре — это идентификатор, а значение — любые данные: число, строка или сложный объект.

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

Redis хранит данные в оперативной памяти и благодаря этому обеспечивает очень высокую производительность — миллионы операций в секунду. Это же порождает два принципиальных ограничения. Первое: объём хранимых данных не может превышать размера оперативной памяти. Второе: при сбое сервера всё, что ещё не сохранилось на диск, безвозвратно пропадёт. Так что не стоит использовать Redis в качестве основного хранилища данных.

Эти особенности и определяют задачи, подходящие для Redis: хранение данных сессий в веб-приложениях, кеширование, генерирование таблиц результатов в многопользовательских играх.

ClickHouse

ClickHouse — это столбцовая СУБД для онлайн-обработки аналитических запросов.

Данные в ClickHouse организованы в таблицах и жестко структурированы. Но в отличие от реляционных БД, которые хранят на диске рядом друг с другом значения всех свойств одного объекта (строку таблицы), в столбцовых СУБД рядом хранятся значения одного свойства всех объектов (столбец).

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

Выигрыш в скорости особенно заметен на больших объемах данных — СУБД ClickHouse способна читать сотни миллионов записей в секунду. БД горизонтально масштабируется, что позволяет работать с базой размером в несколько петабайт. Язык запросов в ней близок к стандартному SQL.

Ещё одна особенность ClickHouse: эта СУБД не поддерживает транзакции и точечное изменение или удаление записей (данные в базе изменяются и удаляются большими порциями).

Клиенты в вебе:

  • tabbix

  • lighthouse

Elasticsearch

Elasticsearch — это нереляционное хранилище данных с широким набором функций полнотекстового поиска.

Данные в Elasticsearch хранятся в виде документов в формате JSON. Они автоматически индексируются, размер индекса составляет от 20 до 30% размера БД. Благодаря этому достигается скорость чтения в сотни миллионов записей в секунду. Для взаимодействия с БД используются JSON-запросы в RESTful API, а в качестве языка запросов — Querydsl.

Elasticsearch хорошо масштабируется, что позволяет работать с большими объёмами данных. При этом она не обеспечивает транзакционную целостность, а запись данных в БД и их удаление не отличаются высокой производительностью.

Основное назначение Elasticsearch — полнотекстовый поиск в большом объёме документов. Эта СУБД широко применяется для аналитической обработки больших массивов данных, анализа логов и журналов работы приложений, функций автозавершения и умного ввода текста.

YDB

YDB — это разработанная Яндексом распределённая СУБД. Она относится к типу NewSQL: основана на реляционной модели, но обеспечивает отказоустойчивость, доступность и масштабируемость на уровне NoSQL-решений.

В YDB данные организуются в таблицы, обеспечивается их транзакционное изменение и строгая консистентность, запросы пишутся на диалекте SQL.

При этом YDB изначально разрабатывалась для так называемых OLTP-сценариев (On-Line Transaction Processing). Это задачи, где СУБД должна поддерживать транзакции и консистентность данных, как это делают классические реляционные СУБД, но при этом надёжно и быстро работать с объёмными БД (т.е. иметь возможность масштабироваться) и с большим числом одновременных запросов на чтение и на запись.

YDB может использоваться в двух режимах: режиме бессерверных вычислений и режиме с выделенными виртуальными машинами. Первый режим подходит для небольших систем с незначительной нагрузкой, когда держать виртуальные машины с БД невыгодно с финансовой точки зрения.

Apache Kafka

Apache Kafka — разработка компании LinkedIn, сочетание распределённой БД и очереди сообщений. Формально Apache Kafka определяется как распределённая стриминговая платформа, т. е. система, управляющая потоками данных между сервисами.

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

Для таких задач и используются очереди сообщений. Одни сервисы генерируют сообщения и отправляют их Apache Kafka, а другие считывают сообщения тогда, когда удобно, и тем самым снижают нагрузку на систему. До доставки сообщения хранятся в БД, которая размещается на нескольких хостах.