2. Особенности БД Apache ChouchDB

Download Report

Transcript 2. Особенности БД Apache ChouchDB

Павел Светличный
Senior iOS Developer
Svitla Systems
Построение кластера на базе
Apache CouchDB
Киев, 25.04.2014
Содержание
1. Обзор существующих NoSQL решений. CAP-теорема как основание для
выбора БД.
2. Особенности БД Apache CouchDB
3. Механизм MapReduce
4. Установка и настройка CouchDB
5. Установка и настройка Nginx
6. Создание общей базы данных
7. Настройка автоматической репликации между нодами
8. Обзор возможностей Couchbase Lite для мобильной платформы iOS.
9. Демонстрация работы iOS приложения с созданным кластером.
1. CAP теорема
(Теорема Брюэра)
A
Традиционные РБД:
Postgres, MySQL, и т.д.
Vertica
Aster Data
Greenplum
C
C – Consistency (Согласованность)
A – Availability (Доступность)
P – Partition Tolerance (Устойчивость)
BigTable, Hypertable, HBase, MongoDB,
Terrastore, Redis, Scalaris, MemcacheDB,
Berkeley DB
Dynamo
Voldemort
Tokyo Cabinet
KAI
Cassandra
CouchDB
SimpleDB
Riak
P
2. Особенности БД Apache ChouchDB
Язык: Erlang
Основное назначение: Согласованность БД, легкость в применении
Лицензия: Apache
Протокол: HTTP/REST
HTTP/REST
HTTP/REST
HTTP/REST
2. Особенности БД Apache ChouchDB
• Двунаправленная репликация (разовая или постоянная) с
определением конфликтов, что позволяет репликацию типа
master-master
2. Особенности БД Apache ChouchDB
• MVCC – запись не блокирует чтение
• Контроль версий (доступны предыдущие версии)
2. Особенности БД Apache ChouchDB
• Встроенная модель map/reduce
2. Особенности БД Apache ChouchDB
• Требуется периодическая чистка (compacting)
• Возможность авторизации и SSL
• Возможность прикреплять файлы => CouchApps
(отдельные приложения)
Двухсторонняя
репликация
Локальная БД
2. Особенности БД Apache ChouchDB
Использование: Для сбора, случайного изменения данных, с
которыми работают подготовленные запросы. Задачи, в которых
важен контроль версий.
Пример: CRM, CMS. Master-Master репликации позволяют легко
реализовать многосайтовую развертку. Мобильные
приложения.
3. Map/Reduce
Два шага: Map и Reduce
Map: Обработка предварительных данных, разделение по узлам
Reduce: Свертка выборки в готовый результат
3. Map/Reduce
Возможность параллельных вычислений
4. Установка и настройка CouchDB
http://couchdb.apache.org
Возможна установка на платформы:
Windows, Mac OS X, Unix
5. Установка и настройка Nginx
Nginx – Reverse Proxy ( http://nginx.org/ru )
Балансировка нагрузки
Запрос к БД
Пользователь видит кластер как
одну цельную БД
5. Установка и настройка Nginx
Поддерживаемые платформы
5. Установка и настройка Nginx
Конфигурационный файл nginx.conf
upstream couchdb_cluster {
server 127.0.0.1:5984;
server 192.168.0.102:5984;
server 192.168.0.100:5984;
}
server {
listen
80;
server_name couchdb;
Список серверов CouchDB для
балансировки нагрузки
Сервер работает на стандартном порту HTTP
Адрес кластера для балансировки
location / {
add_header 'Access-Control-Allow-Origin' '*';
proxy_pass http://couchdb_cluster;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
6. Создание общей базы данных
7. Настройка автоматической
репликации между нодами
Адрес удаленной БД в формате: http://<ip/name>:<port>/<database_name>
7. Настройка автоматической
репликации между нодами
Настройка простой репликации БД при помощи POST запроса
POST /_replicate HTTP/1.1
{"source":”newdatabase","target":"http://192.168.0.100:5984/
newdatabase"}
Настройка продолжительной репликации БД с авторизацией
POST /_replicate HTTP/1.1
{"source":"http://localhost:5984/newdatabase","target":"http://
admin:[email protected]:5984/newdatabase",
"continuous":true}
8. Обзор возможностей Couchbase
Lite для мобильной платформы iOS
http://www.couchbase.com
8. Обзор возможностей Couchbase
Lite для мобильной платформы iOS
Совместимость с CouchDB:
• Репликации
• API
• Поддержка контроля версий
• Готовый SDK
Особенности:
• Использование SQLite в качестве движка БД
• Нет поддержки работы с пользователями БД CouchDB
Спасибо за внимание!