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