Перейти к основному содержимому

NoSQL

NoSQL (Not only SQL) — класс систем управления данными, не требующих фиксированной реляционной схемы и часто оптимизированных под горизонтальное масштабирование, гибкость схемы и высокую доступность. В отличие от традиционных СУБД, NoSQL-решения различаются по моделям данных: документные, ключ-значение, колоночные и графовые. Ниже приведён перечень наиболее значимых реализаций с практической информацией по установке и использованию.


1. MongoDB

  • Тип: Документная (BSON/JSON).
  • Особенности: Гибкая схема, агрегационный конвейер, поддержка индексов, репликации и шардинга, встроенная поддержка геопространственных запросов.
  • Сценарии: Веб-приложения, содержимое с переменной структурой, каталоги, IoT.
  • Установка:
    • Linux (Debian/Ubuntu):
      wget -qO - https://www.mongodb.org/static/pgp/server-7.0.asc | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/mongodb.gpg
      echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu $(lsb_release -cs)/mongodb-org/7.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list
      sudo apt update && sudo apt install mongodb-org
    • macOS: brew install mongodb-community
    • Windows: установщик — MongoDB Download Center
    • Docker:
      docker run --name mongodb -d -p 27017:27017 mongo:7.0
  • Сайт: https://www.mongodb.com

2. Redis

  • Тип: Ключ-значение (in-memory, с опциональной персистентностью).
  • Особенности: Поддержка строк, списков, множеств, хэшей, сортированных множеств; публикация/подписка; Lua-скрипты; TTL; репликация и кластеризация.
  • Сценарии: Кэширование, сессии, очереди, рейт-лимитинг, leaderboard’ы.
  • Установка:
    • Linux (Ubuntu/Debian): sudo apt install redis-server
    • macOS: brew install redis
    • Windows: через WSL или Docker
    • Docker:
      docker run --name redis -d -p 6379:6379 redis:7.2
  • Сайт: https://redis.io

3. Apache Cassandra

  • Тип: Колоночная (wide-column store).
  • Особенности: Распределённая архитектура без единой точки отказа, eventual consistency, CQL (Cassandra Query Language), линейная масштабируемость.
  • Сценарии: Логирование, телеметрия, системы с высокой записью (write-heavy), IoT.
  • Установка:
    • Linux/macOS: скачать архив с официального сайта или через cassandra в Homebrew
    • Docker:
      docker run --name cassandra -d -p 9042:9042 cassandra:4.1
  • Сайт: https://cassandra.apache.org

4. Couchbase

  • Тип: Документная + ключ-значение.
  • Особенности: Поддержка SQL++ (N1QL), встроенная аналитика, полнотекстовый поиск, репликация, enterprise-функции (XDCR, RBAC).
  • Сценарии: Мобильные и веб-приложения, кэширование, микросервисы.
  • Установка:
  • Сайт: https://www.couchbase.com

5. CouchDB

  • Тип: Документная (JSON).
  • Особенности: HTTP API, репликация «peer-to-peer», offline-first, MVCC, визуальный интерфейс Fauxton.
  • Сценарии: Мобильные приложения с offline-режимом, децентрализованные системы.
  • Установка:
    • Linux: sudo apt install couchdb (Ubuntu/Debian)
    • macOS: brew install couchdb
    • Docker:
      docker run -d --name couchdb -p 5984:5984 -e COUCHDB_USER=admin -e COUCHDB_PASSWORD=password couchdb:3.3
  • Сайт: https://couchdb.apache.org

6. Neo4j

  • Тип: Графовая.
  • Особенности: Язык запросов Cypher, ACID-транзакции, нативное хранение связей, поддержка RDF/SPARQL через расширения, визуализация в браузере.
  • Сценарии: Социальные графы, рекомендательные системы, фрод-детекция, знаниевые базы.
  • Установка:
    • Linux/macOS/Windows: Neo4j Desktop или архив с ядром
    • Docker:
      docker run -d --name neo4j -p 7474:7474 -p 7687:7687 -e NEO4J_AUTH=neo4j/password neo4j:5.17
  • Сайт: https://neo4j.com

7. ArangoDB

  • Тип: Мульти-модельная (документная, графовая, ключ-значение).
  • Особенности: Единый язык запросов AQL, JOIN’ы между коллекциями, встроенная поддержка графов и full-text search.
  • Сценарии: Сложные доменные модели с гибридными связями.
  • Установка:
  • Сайт: https://www.arangodb.com

8. DynamoDB (AWS)

  • Тип: Ключ-значение + документная (managed service).
  • Особенности: Полностью управляемый сервис AWS, автоматическое масштабирование, поддержка потоков (Streams), TTL, глобальные таблицы.
  • Сценарии: Serverless-приложения, мобильные бэкенды, высоконагруженные сервисы в облаке.
  • Установка:
    • Только через AWS. Для эмуляции локально:
      docker run -d -p 8000:8000 amazon/dynamodb-local
    • CLI: aws dynamodb create-table ... (требуется AWS CLI и учётная запись)
  • Сайт: https://aws.amazon.com/dynamodb/

9. RavenDB

  • Тип: Документная (JSON), ACID-совместимая.
  • Особенности: Встроенная репликация, full-text search, LINQ-запросы (.NET), распределённая архитектура, UI-консоль.
  • Сценарии: .NET-приложения, enterprise-системы с требованием транзакционной целостности.
  • Установка:
  • Сайт: https://ravendb.net

10. ScyllaDB

  • Тип: Колоночная (совместима с Apache Cassandra API).
  • Особенности: Написана на C++ с использованием Seastar, низкая латентность, высокая пропускная способность, совместимость с CQL и инструментами Cassandra.
  • Сценарии: High-throughput приложения, замена Cassandra при требовании производительности.
  • Установка:
    • Linux: пакеты для Ubuntu/Debian/RHEL — инструкция
    • Docker:
      docker run --name scylla -d -p 9042:9042 scylladb/scylla:5.4
  • Сайт: https://www.scylladb.com

11. FoundationDB

  • Тип: Ключ-значение (упорядоченное), ACID.
  • Особенности: Строгая согласованность, поддержка слоёв (например, документного через Record Layer), разработана Apple.
  • Сценарии: Финтех, системы с требованием строгих транзакций поверх простого API.
  • Установка:
    • Linux/macOS: GitHub Releases
    • Docker:
      docker run -d --name fdb -p 4500:4500 foundationdb/foundationdb:7.1
  • Сайт: https://www.foundationdb.org

12. HBase (Apache)

  • Тип: Колоночная, поверх HDFS.
  • Особенности: Часть экосистемы Hadoop, сильная масштабируемость, интеграция с Apache Spark, Phoenix (SQL-интерфейс).
  • Сценарии: Big Data, аналитика, долговременное хранение логов.
  • Установка:
    • Требует Hadoop. Упрощённый запуск через Docker:
      docker run -d --name hbase harisekhon/hbase:2.4
  • Сайт: https://hbase.apache.org