MapR-DB — различия между версиями

Материал из Национальной библиотеки им. Н. Э. Баумана
(Новая страница: «===Определение=== MapR-DB – это высокопроизводительная NoSQL система управления базами данных,…»)
(Метки: Правка с моб. устройства, Правка через мобильную версию сайта)
 
(не показано 5 промежуточных версий этого же участника)
Строка 1: Строка 1:
 
===Определение===
 
===Определение===
 
MapR-DB – это высокопроизводительная NoSQL система управления базами данных, встроенная в платформу данных MapR. Это многомодельная база данных с высокой степенью масштабируемости.
 
MapR-DB – это высокопроизводительная NoSQL система управления базами данных, встроенная в платформу данных MapR. Это многомодельная база данных с высокой степенью масштабируемости.
 +
 +
===Преимущества NoSQL базы данных===
 +
NoSQL-базы оптимизированы для приложений, которые должны быстро, с низкой временной задержкой обрабатывать большой объем данных с разной структурой. Современное понимание NoSQL-СУБД возникло в начале 2000-х годов, в рамках создания параллельно работающих распределённых систем для масштабируемых интернет-приложений, таких как онлайн-поисковики. С ростом объёмов данных  актуальной проблемой стало - масштабирование. Реляционные базы данных хорошо подходят для работы со строго структурированными наборами данных с предсказуемым размером.
 +
База данных MapR была разработана с учётом эффективного масштабирования и для работы в составе распределенной кластерной архитектуры, которую традиционные SQL базы данных не могут предоставить.
 +
По сравнению с другими базами данных NoSQL база данных MapR имеет несколько преимуществ:
 +
*Предсказуемая низкая задержка и стабильно высокая пропускная способность (см. рисунок 1);
 +
*Разделение данных в кластере по ключу выполняется автоматически и быстро;
 +
*Продвинутая модель согласованности и репликации устраняет риски возможного отказа;
 +
*Мгновенное восстановление происходит без потери данных.
 +
 +
[[Файл:MapR-DB_performance.png|центр|{{center|Рисунок 1 – Сравнение производительности MapR-DB с другими БД}}]]
 +
 +
===Масштабирование MapR-DB===
 +
В базе данных MapR таблица автоматически разбивается внутри кластера (см. рисунок 2) по диапазону ключей, а каждый сервер хранит в себе подмножество таблицы, обеспечивая масштабируемое и быстрое чтение и запись по ключу строки. Данная операция происходит автоматически. Это значительно повышает производительность за счет распределенной обработки базы данных по кластеру. Совместно используемые данные хранятся вместе в денормализованном виде, например в документах JSON, что ускоряет горизонтальное масштабирование.
 +
[[Файл:MapR-DB horizontally scale.png|мини|центр|{{center|Рисунок 2 – Схема горизонтального масштабирования MapR-DB}]]
 +
 +
===Особенности файловой архитектуры Mapr-DB===
 +
Apache HBase и Apache Cassandra работают в файловой системе, подразумевающей только добавление файлов, что приводит к невозможности обновить файлы при изменении данных. Уникальность MapR заключается в том, что таблицы MapR-DB, файлы MapR интегрированы в надежное, глобальнораспределенное хранилище данных MapR-XD. MapR-XD реализует файловую систему чтения-записи, изначально встроенную в C++ и напрямую обращается к дискам, что позволяет MapR-DB выполнять эффективные обновления файлов вместо постоянной записи в новые неизменяемые файлы.
 +
MapR-DB не имеет лишних слоев абстракции(см. рисунок 3), через которые данные перемещаются при выполнении операций записи, чтения. Она работает внутри процесса MFS, который читает и записывает на диски информацию напрямую. Подход, принятый в MapR-DB, устраняет, дублирующее кэширование и ненужные абстракции, что приводит к оптимизации операций ввода-вывода с данными.
 +
[[Файл:MapR-DB filesystem.png|мини|центр|{{center|Рисунок 3 – Особенности файловой архитектуры Mapr-DB}}]]
 +
 +
===Создание выделенных разделов===
 +
В MapR – DB в кластере можно создавать разделы. Таким образом, можно изолировать конфиденциальные данные или приложения и даже использовать разнородное оборудование в кластере для определенных рабочих задач. Например, можно разместить данные для хранения личной информации на узлах с зашифрованными дисками или для хранения таблиц MapR-DB на узлах с твердотельными накопителями. Также можно изолировать рабочие среды для разных пользователей или для различных приложений.
 +
В качестве примера на приведенном ниже рисунке изображена таблица кластера MapR. Кластер имеет три отдельных раздела, смонтированных в каталогах /user/john, /user/dave и /project/ads. Как показано на рисунке 4, каждый каталог содержит файлы и таблицы, логически сгруппированные вместе. Поскольку каждый из этих каталогов расположен на разных разделах, данные в каждом каталоге могут иметь различные правила и разрешения. Например, /user/john имеет разрешение на использование диска, а с /user/dave переодически снимается резервная копия. Кроме того, два каталога /user/dave и /project/ads скопированы на носители, находящиеся за пределами данного кластера, тем самым обеспечивая доступ только для чтения к данным с высоким трафиком.
 +
Зеркалирование - это параллельная операция, копирования данных непосредственно с узлов одного кластера MapR на узлы в удаленном кластере. Содержимое раздела постоянно доступно, даже если файлы раздела записываются или удаляются.
 +
[[Файл:Partition scheme MapR-DB.png|мини|центр|{{center|Рисунок 4 – Схема 3-х разделов, имеющих разные разрешения}}]]
 +
 +
===Функции снимка раздела===
 +
Снимок раздела фиксирует состояние каталогов раздела, таблиц MapR-DB и файлов в определенный момент времени. Вы можете использовать их для:
 +
*Отката из – за возникших ошибок. Ошибки приложения или непреднамеренные ошибки пользователя могут по ошибке удалить данные или изменить данные непредвиденным образом. С помощью моментальных снимков разделов вы можете откатить таблицы MapR-DB до известного, четко определенного состояния;
 +
*Создания резервных копий во время работы кластера. Возможность создавать резервные копии таблиц на лету для проверки целостности или управления данными;
 +
*Машинное обучение. Среды машинного обучения, такие как Apache Mahout, могут использовать моментальные снимки для процесса обучения модели. Снимки позволяют при обучении работать с сохраненным изображением тренировочных данных, сохранённых в точно определённый момент времени. В большинстве случаев использование снимков не требует дополнительного места в хранилище, и снимки делаются менее чем за одну секунду;
 +
Моментальные снимки базы данных не связаны с резервным копированием путем создания моментальных снимков, с изоляцией моментальных снимков транзакций и с репликацией моментальных снимков.
 +
 +
===Запись данных в кластер MapR-DB===
 +
В обычных условиях кластеру необходимо как можно быстрее записывать и реплицировать входящие данные. Когда файл записывается в кластер MapR, он сначала разбивается на части, называемые "чанками". Каждый "чанк" записывается в контейнер как последовательность блоков по 8 Кбайт (см. рисунок 5). Как только блок записан, он реплицируется дальше по узлам кластера. Это повторяется для каждого "чанка", пока весь файл не будет записан. MapR гарантирует, что каждая запись, на которую был дано подтверждение о записи, переживет сбой.
 +
[[Файл:Write file in MapR-DB.png|мини|центр|{{center|Рисунок 5 – Процесс записи файла в узлы кластера MapR-DB}}]]
 +
 +
===Модели данных, хранящиеся в MapR-DB===
 +
В MapR-DB могут хранится следующие модели данных:
 +
*Хранилище документов. Хранилище документов управляет набором значений именованных строковых полей и данных объекта. Данные в этих хранилищах содержатся в виде документов JSON. Каждое значение поля может представлять собой скалярный элемент, например число, или сложный объект, например список или коллекция типа "родитель — потомок". 
 +
Как правило, документ содержит все данные одной сущности. Например, сущность может содержать сведения о клиенте, заказе или и те, и другие. Один документ может содержать сведения, которые в реляционной СУБД обычно распределяются по нескольким реляционным таблицам. Хранилище документов не обязывает использовать одинаковую структуру для всех документов. Поддержка свободной формы записи обеспечивает большую гибкость. Например, приложения могут хранить в документах разные данные в соответствии с текущими требованиями компании.
 +
MapR-DB поддерживает документы OJAI в качестве стандартного файла документо-ориентированного хранилища данных. Таблицы MapR-DB JSON используют модель данных OJAI и поддерживают API OJAI. Документы подобны JSON, но хранятся в эффективной двоичной форме, а не в виде простого текста ASCII. В таблицах JSON каждое значение имеет уникальный ключ (_id), а поля в документе идентифицируются путями, например, address.street)
 +
<syntaxhighlight lang="JSON">
 +
{
 +
  "_id"  : "row key here",
 +
  "name"  : "bob",
 +
  "photo" : "photo path",
 +
  "address" : {
 +
    "house"  : 123,
 +
    "street"  : "Main",
 +
    "phones"  : [
 +
      {"mobile" : 5551234},
 +
      {"work"  : 11234567890}]
 +
  },
 +
  "hobbies" : ["badminton", "chess"]
 +
}
 +
</syntaxhighlight>
 +
 +
Использование OJAI в MapR-DB даёт следующие преимущества:
 +
**Возможность хранения вложенных или иерархических данных;
 +
**Для обновления отдельных полей или подмножеств полей нет необходимости читать целые документы, изменять их, а затем записывать измененные документы на диск;
 +
**Возможность фильтровать результаты запроса в MapR-DB, прежде чем результаты будут возвращены клиентским приложениям.
 +
 +
Пример создания JSON таблицы:
 +
<syntaxhighlight lang="Java">
 +
public void createJSONTable(String tablePath) throws DBException {
 +
    try (Admin admin = MapRDB.newAdmin()) {
 +
      if (!admin.tableExists(tablePath)) {
 +
          admin.createTable(tablePath).close();
 +
      }
 +
    }
 +
  }
 +
</syntaxhighlight>
 +
 +
Просмотр таблиц JSON в папке:
 +
<syntaxhighlight lang="Java">
 +
public void listTables(String parentFolder) throws DBException {
 +
    try (Admin admin = MapRDB.newAdmin()) {
 +
      for(Path tablePath : admin.listTables(parentFolder)) {
 +
        System.out.println(tablePath);
 +
      }
 +
    }
 +
  }
 +
</syntaxhighlight>
 +
 +
Удаление JSON таблицы:
 +
<syntaxhighlight lang="Java">
 +
public void deleteTable(String tablePath) throws DBException {
 +
    try (Admin admin = MapRDB.newAdmin()) {
 +
      if (admin.tableExists(tablePath)) {
 +
        admin.deleteTable(tablePath).close();
 +
      }
 +
    }
 +
  }
 +
</syntaxhighlight>
 +
 +
*Столбчатое хранилище.Столбчатое хранилище данных или хранилище семейств столбцов упорядочивает данные по столбцам и строкам. Столбчатое хранилище данных в простейшей форме почти неотличимо от реляционной базы данных, по крайней мере организационно. Настоящее преимущество столбчатого хранилища данных заключается в способности денормализованно структурировать разреженные данные, что связано со столбцово-ориентированным методом хранения данных.
 +
Сканирование всей таблицы на совпадения может быть очень трудоемким. Семейства столбцов позволяют группировать связанные наборы данных и ограничивать запросы определенным подмножеством (см. рисунок 6), что приводит к повышению производительности. При разработке семейства столбцов, анализируют, какие типы запросов будут использоваться чаще всего, и соответствующим образом группируют столбцы.
 +
[[Файл:Таблица столбчатой БД.png|центр|{{center|Рисунок 6 – Таблица с сгруппированными столбцами}}]]
 +
 +
===Установка MapR-DB===
 +
Для установки MapR-DB необходимо сделать следующие:
 +
#Выбор узла в сети, на котором будет производится установка;
 +
#Скачивание скрипта-установки  mapr-setup.sh
 +
<console>##i##wget https://package.mapr.com/releases/installer/mapr-setup.sh -P /tmp##!i##</console>;
 +
#Установка разрешений исполняемого файла
 +
<console>##i##chmod +x /tmp/mapr-setup.sh##!i##</console>;
 +
#Запуск установки
 +
<console>##i##sudo bash /tmp/mapr-setup.sh##!i##</console>;
 +
#Продолжение установки в браузере
 +
<console>##i##https://<Installer Node hostname/IPaddress>:9443##!i##</console>;

Версия 01:46, 24 мая 2020

Определение

MapR-DB – это высокопроизводительная NoSQL система управления базами данных, встроенная в платформу данных MapR. Это многомодельная база данных с высокой степенью масштабируемости.

Преимущества NoSQL базы данных

NoSQL-базы оптимизированы для приложений, которые должны быстро, с низкой временной задержкой обрабатывать большой объем данных с разной структурой. Современное понимание NoSQL-СУБД возникло в начале 2000-х годов, в рамках создания параллельно работающих распределённых систем для масштабируемых интернет-приложений, таких как онлайн-поисковики. С ростом объёмов данных актуальной проблемой стало - масштабирование. Реляционные базы данных хорошо подходят для работы со строго структурированными наборами данных с предсказуемым размером. База данных MapR была разработана с учётом эффективного масштабирования и для работы в составе распределенной кластерной архитектуры, которую традиционные SQL базы данных не могут предоставить. По сравнению с другими базами данных NoSQL база данных MapR имеет несколько преимуществ:

  • Предсказуемая низкая задержка и стабильно высокая пропускная способность (см. рисунок 1);
  • Разделение данных в кластере по ключу выполняется автоматически и быстро;
  • Продвинутая модель согласованности и репликации устраняет риски возможного отказа;
  • Мгновенное восстановление происходит без потери данных.
Рисунок 1 – Сравнение производительности MapR-DB с другими БД

Масштабирование MapR-DB

В базе данных MapR таблица автоматически разбивается внутри кластера (см. рисунок 2) по диапазону ключей, а каждый сервер хранит в себе подмножество таблицы, обеспечивая масштабируемое и быстрое чтение и запись по ключу строки. Данная операция происходит автоматически. Это значительно повышает производительность за счет распределенной обработки базы данных по кластеру. Совместно используемые данные хранятся вместе в денормализованном виде, например в документах JSON, что ускоряет горизонтальное масштабирование.

Рисунок 2 – Схема горизонтального масштабирования MapR-DB}

Особенности файловой архитектуры Mapr-DB

Apache HBase и Apache Cassandra работают в файловой системе, подразумевающей только добавление файлов, что приводит к невозможности обновить файлы при изменении данных. Уникальность MapR заключается в том, что таблицы MapR-DB, файлы MapR интегрированы в надежное, глобальнораспределенное хранилище данных MapR-XD. MapR-XD реализует файловую систему чтения-записи, изначально встроенную в C++ и напрямую обращается к дискам, что позволяет MapR-DB выполнять эффективные обновления файлов вместо постоянной записи в новые неизменяемые файлы. MapR-DB не имеет лишних слоев абстракции(см. рисунок 3), через которые данные перемещаются при выполнении операций записи, чтения. Она работает внутри процесса MFS, который читает и записывает на диски информацию напрямую. Подход, принятый в MapR-DB, устраняет, дублирующее кэширование и ненужные абстракции, что приводит к оптимизации операций ввода-вывода с данными.

Рисунок 3 – Особенности файловой архитектуры Mapr-DB

Создание выделенных разделов

В MapR – DB в кластере можно создавать разделы. Таким образом, можно изолировать конфиденциальные данные или приложения и даже использовать разнородное оборудование в кластере для определенных рабочих задач. Например, можно разместить данные для хранения личной информации на узлах с зашифрованными дисками или для хранения таблиц MapR-DB на узлах с твердотельными накопителями. Также можно изолировать рабочие среды для разных пользователей или для различных приложений. В качестве примера на приведенном ниже рисунке изображена таблица кластера MapR. Кластер имеет три отдельных раздела, смонтированных в каталогах /user/john, /user/dave и /project/ads. Как показано на рисунке 4, каждый каталог содержит файлы и таблицы, логически сгруппированные вместе. Поскольку каждый из этих каталогов расположен на разных разделах, данные в каждом каталоге могут иметь различные правила и разрешения. Например, /user/john имеет разрешение на использование диска, а с /user/dave переодически снимается резервная копия. Кроме того, два каталога /user/dave и /project/ads скопированы на носители, находящиеся за пределами данного кластера, тем самым обеспечивая доступ только для чтения к данным с высоким трафиком. Зеркалирование - это параллельная операция, копирования данных непосредственно с узлов одного кластера MapR на узлы в удаленном кластере. Содержимое раздела постоянно доступно, даже если файлы раздела записываются или удаляются.

Рисунок 4 – Схема 3-х разделов, имеющих разные разрешения

Функции снимка раздела

Снимок раздела фиксирует состояние каталогов раздела, таблиц MapR-DB и файлов в определенный момент времени. Вы можете использовать их для:

  • Отката из – за возникших ошибок. Ошибки приложения или непреднамеренные ошибки пользователя могут по ошибке удалить данные или изменить данные непредвиденным образом. С помощью моментальных снимков разделов вы можете откатить таблицы MapR-DB до известного, четко определенного состояния;
  • Создания резервных копий во время работы кластера. Возможность создавать резервные копии таблиц на лету для проверки целостности или управления данными;
  • Машинное обучение. Среды машинного обучения, такие как Apache Mahout, могут использовать моментальные снимки для процесса обучения модели. Снимки позволяют при обучении работать с сохраненным изображением тренировочных данных, сохранённых в точно определённый момент времени. В большинстве случаев использование снимков не требует дополнительного места в хранилище, и снимки делаются менее чем за одну секунду;

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

Запись данных в кластер MapR-DB

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

Рисунок 5 – Процесс записи файла в узлы кластера MapR-DB

Модели данных, хранящиеся в MapR-DB

В MapR-DB могут хранится следующие модели данных:

  • Хранилище документов. Хранилище документов управляет набором значений именованных строковых полей и данных объекта. Данные в этих хранилищах содержатся в виде документов JSON. Каждое значение поля может представлять собой скалярный элемент, например число, или сложный объект, например список или коллекция типа "родитель — потомок".

Как правило, документ содержит все данные одной сущности. Например, сущность может содержать сведения о клиенте, заказе или и те, и другие. Один документ может содержать сведения, которые в реляционной СУБД обычно распределяются по нескольким реляционным таблицам. Хранилище документов не обязывает использовать одинаковую структуру для всех документов. Поддержка свободной формы записи обеспечивает большую гибкость. Например, приложения могут хранить в документах разные данные в соответствии с текущими требованиями компании. MapR-DB поддерживает документы OJAI в качестве стандартного файла документо-ориентированного хранилища данных. Таблицы MapR-DB JSON используют модель данных OJAI и поддерживают API OJAI. Документы подобны JSON, но хранятся в эффективной двоичной форме, а не в виде простого текста ASCII. В таблицах JSON каждое значение имеет уникальный ключ (_id), а поля в документе идентифицируются путями, например, address.street)

{
  "_id"   : "row key here",
  "name"  : "bob",
  "photo" : "photo path",
  "address" : {
    "house"   : 123,
    "street"  : "Main",
    "phones"  : [
      {"mobile" : 5551234},
      {"work"   : 11234567890}]
  },
  "hobbies" : ["badminton", "chess"]
}

Использование OJAI в MapR-DB даёт следующие преимущества:

    • Возможность хранения вложенных или иерархических данных;
    • Для обновления отдельных полей или подмножеств полей нет необходимости читать целые документы, изменять их, а затем записывать измененные документы на диск;
    • Возможность фильтровать результаты запроса в MapR-DB, прежде чем результаты будут возвращены клиентским приложениям.

Пример создания JSON таблицы:

public void createJSONTable(String tablePath) throws DBException {
    try (Admin admin = MapRDB.newAdmin()) {
      if (!admin.tableExists(tablePath)) {
          admin.createTable(tablePath).close();
      }
    }
  }

Просмотр таблиц JSON в папке:

public void listTables(String parentFolder) throws DBException {
    try (Admin admin = MapRDB.newAdmin()) {
      for(Path tablePath : admin.listTables(parentFolder)) {
        System.out.println(tablePath);
      }
    }
  }

Удаление JSON таблицы:

public void deleteTable(String tablePath) throws DBException {
    try (Admin admin = MapRDB.newAdmin()) {
      if (admin.tableExists(tablePath)) {
        admin.deleteTable(tablePath).close();
      }
    }
  }
  • Столбчатое хранилище.Столбчатое хранилище данных или хранилище семейств столбцов упорядочивает данные по столбцам и строкам. Столбчатое хранилище данных в простейшей форме почти неотличимо от реляционной базы данных, по крайней мере организационно. Настоящее преимущество столбчатого хранилища данных заключается в способности денормализованно структурировать разреженные данные, что связано со столбцово-ориентированным методом хранения данных.

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

Рисунок 6 – Таблица с сгруппированными столбцами

Установка MapR-DB

Для установки MapR-DB необходимо сделать следующие:

  1. Выбор узла в сети, на котором будет производится установка;
  2. Скачивание скрипта-установки mapr-setup.sh
wget https://package.mapr.com/releases/installer/mapr-setup.sh -P /tmp
;
  1. Установка разрешений исполняемого файла
chmod +x /tmp/mapr-setup.sh
;
  1. Запуск установки
sudo bash /tmp/mapr-setup.sh
;
  1. Продолжение установки в браузере
https://<Installer Node hostname/IPaddress>:9443
;