CouchDB - Введение

Система управления базой данных обеспечивает механизм для хранения и поиска данных. Существует три основных типа систем управления базами данных, а именно РСУБД (системы управления реляционными базами данных), OLAP (системы онлайн-аналитической обработки) и NoSQL.

СУБД

СУБД расшифровывается как Система управления реляционными базами данных. СУБД является основой для SQL и для всех современных систем баз данных, таких как MS SQL Server, IBM DB2, Oracle, MySQL и Microsoft Access.

Система управления реляционными базами данных (СУБД) - это система управления базами данных (СУБД), основанная на реляционной модели, представленной EF Codd.

Данные в СУБД хранятся в объектах базы данных, называемых tables. Таблица представляет собой набор связанных записей данных и состоит из столбцов и строк. В нем хранятся только структурированные данные.

OLAP

Сервер онлайн-аналитической обработки (OLAP) основан на многомерной модели данных. Это позволяет менеджерам и аналитикам получать представление об информации благодаря быстрому, согласованному и интерактивному доступу к информации.

Базы данных NoSQL

База данных NoSQL (иногда называемая Not Only SQL) - это база данных, которая предоставляет механизм для хранения и извлечения данных, отличный от табличных отношений, используемых в реляционных базах данных. Эти базы данных не содержат схемы, поддерживают легкую репликацию, имеют простой API, в конечном итоге согласованный и могут обрабатывать огромные объемы данных (большие данные).

Основная цель базы данных NoSQL - иметь следующее:

  • Простота конструкции,
  • Горизонтальное масштабирование и
  • Более точный контроль над доступностью.

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

Key-value Store- Эти базы данных предназначены для хранения данных в парах "ключ-значение", и эти базы данных не будут иметь схемы. В этих базах данных каждое значение данных состоит из индексированного ключа и значения для этого ключа.

Примеры - BerkeleyDB, Cassandra, DynamoDB, Riak.

Column Store- В этих базах данных данные хранятся в ячейках, сгруппированных в столбцы данных, и эти столбцы далее группируются в семейства столбцов. Эти семейства столбцов могут содержать любое количество столбцов.

Примеры - BigTable, HBase и HyperTable.

Document Store- Это базы данных, разработанные на основе базовой идеи хранилищ «ключ-значение», где «документы» содержат более сложные данные. Здесь каждому документу присваивается уникальный ключ, который используется для извлечения документа. Они предназначены для хранения, извлечения и управления документально-ориентированной информацией, также известной как полуструктурированные данные.

Примеры - CouchDB и MongoDB.

Что такое CouchDB?

CouchDB - это база данных с открытым исходным кодом, разработанная Apache Software Foundation. Основное внимание уделяется простоте использования, охватывающей Интернет. Это база данных хранилища документов NoSQL.

Он использует JSON для хранения данных (документов), java-скрипт в качестве языка запросов для преобразования документов, протокол http для api для доступа к документам, запрашивает индексы с помощью веб-браузера. Это приложение с несколькими мастерами, выпущенное в 2005 году, стало проектом apache в 2008 году.

Почему CouchDB?

  • CouchDB имеет REST API на основе HTTP, который помогает легко взаимодействовать с базой данных. А простая структура ресурсов и методов HTTP (GET, PUT, DELETE) проста для понимания и использования.

  • Поскольку мы храним данные в гибкой структуре на основе документов, не нужно беспокоиться о структуре данных.

  • Пользователям предоставляется мощное отображение данных, которое позволяет запрашивать, комбинировать и фильтровать информацию.

  • CouchDB обеспечивает простую в использовании репликацию, с помощью которой вы можете копировать, совместно использовать и синхронизировать данные между базами данных и машинами.

Модель данных

  • База данных - это самая внешняя структура / контейнер данных в CouchDB.

  • Каждая база данных представляет собой набор независимых документов.

  • Каждый документ поддерживает свои собственные данные и автономную схему.

  • Метаданные документа содержат информацию о редакции, что позволяет объединить различия, возникшие при отключении баз данных.

  • CouchDB реализует мультиверсионный контроль параллелизма, чтобы избежать необходимости блокировать поле базы данных во время записи.

Особенности CouchDB: уменьшение содержания

Хранение документов

CouchDB - это база данных NoSQL для хранения документов. Он обеспечивает возможность хранения документов с уникальными именами, а также предоставляет API под названием RESTful HTTP API для чтения и обновления (добавления, редактирования, удаления) документов базы данных.

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

Обновления документов (добавление, редактирование, удаление) следуют за атомарностью, т. Е. Сохраняются полностью или не сохраняются вообще. В базе данных не будет частично сохраненных или отредактированных документов.

Структура документа Json

{
   "field" : "value",
   "field" : "value",
   "field" : "value",
}

КИСЛОТНЫЕ Свойства

CouchDB содержит свойства ACID как одну из своих функций.

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

При чтении CouchDB используется мультиверсионная модель управления параллелизмом (MVCC), благодаря которой клиент будет видеть согласованный моментальный снимок базы данных от начала до конца операции чтения.

Всякий раз, когда документ обновляется, CouchDB сбрасывает данные на диск, и обновленный заголовок базы данных записывается двумя последовательными и идентичными фрагментами, составляя первые 4 КБ файла, а затем синхронно сбрасывается на диск. Частичные обновления во время сброса будут отброшены.

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

Уплотнение

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

Просмотры

Данные в CouchDB хранятся в полуструктурированных документах, гибких с отдельными неявными структурами, но это простая модель документа для хранения и совместного использования данных. Если мы хотим видеть наши данные разными способами, нам нужен способ фильтрации, организации и составления отчетов по данным, которые не были разложены на таблицы.

Чтобы решить эту проблему, CouchDB предоставляет модель представления. Представления - это метод агрегирования документов в базе данных и создания отчетов по ним, они создаются по запросу для агрегирования, объединения и составления отчетов по документам базы данных. Поскольку представления создаются динамически и не влияют на базовый документ, вы можете иметь столько различных представлений представлений одних и тех же данных, сколько захотите.

История

  • CouchDB был написан на языке программирования Erlang.
  • Его основал Дэмиен Кац в 2005 году.
  • CouchDB стал проектом Apache в 2008 году.

Текущая версия CouchDB - 1.61.