Мастер класс: Х айлоадблоки - использование, n osql

24
Мастер класс: Хайлоадблоки - использование, NoSQL Александр Сербул Руководитель направления контроля качества интеграции и внедрений 1С-Битрикс

Upload: erica-sullivan

Post on 30-Dec-2015

68 views

Category:

Documents


4 download

DESCRIPTION

Мастер класс: Х айлоадблоки - использование, N oSQL. Александр Сербул Руководитель направления контроля качества интеграции и внедрений 1С-Битрикс. ACID , SQL. С конца 70 г.г ., «Джим» Грей Эдгар Кодд, Кристофер Дейт Atomicity — Атомарность Consistency — Согласованность - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Мастер класс:  Х айлоадблоки - использование,  N oSQL

Мастер класс: Хайлоадблоки - использование, NoSQL

Александр Сербул

Руководитель направленияконтроля качества интеграции и внедрений 1С-Битрикс

Page 2: Мастер класс:  Х айлоадблоки - использование,  N oSQL

ACID, SQL

С конца 70 г.г., «Джим» Грей

Эдгар Кодд, Кристофер Дейт

Atomicity — Атомарность

Consistency — Согласованность

Isolation — Изолированность

Durability — Надежность

Page 3: Мастер класс:  Х айлоадблоки - использование,  N oSQL

NoSQL – как все начиналось

Dynamo (Amazon, =< 2007)

Cassandra (Facebook, 2009)

MongoDB (2009)

Redis (2009)

Page 4: Мастер класс:  Х айлоадблоки - использование,  N oSQL

NoSQL – «плавающие» схемы данных

Page 5: Мастер класс:  Х айлоадблоки - использование,  N oSQL

NoSQL – «страшные архитектуры»

Page 6: Мастер класс:  Х айлоадблоки - использование,  N oSQL

NoSQL – распределенные алгоритмы

Werner Vogels - VP and CTO of Amazon.com

Page 7: Мастер класс:  Х айлоадблоки - использование,  N oSQL

Теорема CAP (Брюера)Проф. Эрик Брюер, 2000, University of California at Berkeley

Согласованность данных (Consistency) — во всех

вычислительных узлах в один момент времени данные не

противоречат друг другу

Доступность (Availability) — любой запрос к

распределённой системе завершается корректным

откликом

Устойчивость к разделению (Partition tolerance) —

расщепление распределённой системы на несколько

изолированных секций не приводит к некорректности

отклика от каждой из секций

Page 8: Мастер класс:  Х айлоадблоки - использование,  N oSQL

Теорема CAP - CA

Система, во всех узлах которой данные согласованы и обеспечена

доступность, жертвует устойчивостью к распаду на секции. Такие

системы возможны на основе технологического программного

обеспечения, поддерживающего транзакционность в смысле ACID.

Примерами таких систем могут быть решения на основе кластерных

систем управления базами данных или распределённая служба

каталогов LDAP.

Page 9: Мастер класс:  Х айлоадблоки - использование,  N oSQL

Теорема CAP - CP

Распределённая система, в каждый момент обеспечивающая

целостный результат и способная функционировать в условиях

распада, в ущерб доступности может не выдавать отклик.

Устойчивость к распаду на секции требует обеспечения

дублирования изменений во всех узлах системы, в этой связи

отмечается практическая целесообразность использования в таких

системах распределённых пессимистических блокировок для

сохранения целостности

Page 10: Мастер класс:  Х айлоадблоки - использование,  N oSQL

Теорема CAP - AP

Распределённая система, отказывающаяся от целостности

результата. Большинство NoSQL-систем принципиально не

гарантируют целостности данных, и ссылаются на теорему CAP как

на мотив такого ограничения.

Задачей при построении AP-систем становится обеспечение

некоторого практически целесообразного уровня целостности

данных, в этом смысле про AP-системы говорят как о «целостных в

конечном итоге» (eventually consistent) или как о «слабо целостных»

(weak consistent)

DNS, Web Caches, NoSQL …

Page 11: Мастер класс:  Х айлоадблоки - использование,  N oSQL

NoSQL – поможет ли?

Риски:

Eventual consistency

Агрессивная денормализация

Проблемы со сложными запросами

Усложнение приложения-клиента

Page 12: Мастер класс:  Х айлоадблоки - использование,  N oSQL

HandlerSocket

Автор:

Akira Higuchi

DeNA Co., Ltd.

2010 год

Page 13: Мастер класс:  Х айлоадблоки - использование,  N oSQL

WebApp + memcached

Page 14: Мастер класс:  Х айлоадблоки - использование,  N oSQL

WebApp + HandlerSocket

Page 15: Мастер класс:  Х айлоадблоки - использование,  N oSQL

Архитектура Хайлоадблоков

Отдельные таблицы БД

Свои индексы

D7: стандартизированные интерфейсы (Table Data Gateway):

сущность (Bitrix\Main\Entity\Base) 

поля сущности (Bitrix\Main\Entity\Field и его наследники) 

датаменеджер (Bitrix\Main\Entity\DataManager)

Page 16: Мастер класс:  Х айлоадблоки - использование,  N oSQL

Полезные книжечки

Изучайте истории успеха

Разбирайтесь в архитектуре

Используйте подходящие проекту

решения

Ищите готовые примеры в Bitrix

Framework, D7

Page 17: Мастер класс:  Х айлоадблоки - использование,  N oSQL

Table Module

“A single instance that handles the business logic for all rows in a

database table or view”

Page 18: Мастер класс:  Х айлоадблоки - использование,  N oSQL

Table Data Gateway

“An object that acts as a Gateway to a database table. One instance

handles all the rows in the table”

Page 19: Мастер класс:  Х айлоадблоки - использование,  N oSQL

Настройка подключения к HandlerSocket

Ставим PerconaServer или MariaDB или:

1) Качаем исходники MySQL

2) Собираем плагин HandlerSocket

Настраиваем «/bitrix/.settings.php»

Page 20: Мастер класс:  Х айлоадблоки - использование,  N oSQL

Архитектура Хайлоадблоков

\Bitrix\Main\Loader::includeModule( 'highloadblock' );

use Bitrix\Highloadblock as HL;

use Bitrix\Main\Entity;

$hlblock = HL\HighloadBlockTable::getById( 1 )->fetch();

$entity = HL\HighloadBlockTable::compileEntity( $hlblock ); //генерация класса

$entityClass = $entity->getDataClass();

$result = $entityClass:: add / update / delete / getList/ getById

Page 21: Мастер класс:  Х айлоадблоки - использование,  N oSQL

Хайлоадблоки и HandlerSocket

1) $obj = $entityClass::getById( $arData["ID"] )->fetch();

2) Вызов API HS:

open_index

find

3) Обработка результата приложением

Работает для ЛЮБЫХ сущностей!Bitrix\Main\UserTable::getById(1);

Снижение нагрузки на MySQL и сеть.

Page 22: Мастер класс:  Х айлоадблоки - использование,  N oSQL

Хайлоадблоки и бизнес-логика

Наследуем от класса сущности Хайлоадблока:

$hlblock = HL\HighloadBlockTable::getById( # )->fetch();

$entity = HL\HighloadBlockTable::compileEntity( $hlblock ); //генерация класса

$entityClass = $entity->getDataClass();

class MyDomainObjectTable extends #entityClass# {

…//наша бизнес логика проекта

}

Page 23: Мастер класс:  Х айлоадблоки - использование,  N oSQL

Хайлоадблоки/HandlerSocket

Плюсы:

Низкие накладные расходы (PHP, меньше запросов SQL)

Низкий риск блокировок в БД (свои таблицы)

Тысячи, миллионы сущностей, справочники

Снижение нагрузки на БД, хостинг

Highload проекты, системы с большим объемом информации

Page 24: Мастер класс:  Х айлоадблоки - использование,  N oSQL

Спасибо за внимание! Вопросы?

Александр Сербул[email protected]@AlexSerbul