Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 10 лет назад пользователемДемид Филькин
1 Мастер класс: Хайлоадблоки - использование, NoSQL Александр Сербул Руководитель направления контроля качества интеграции и внедрений 1С-Битрикс
2 ACID, SQL С конца 70 г.г., «Джим» Грей Эдгар Кодд, Кристофер Дейт Atomicity Атомарность Consistency Согласованность Isolation Изолированность Durability Надежность
3 NoSQL – как все начиналось Dynamo (Amazon, =< 2007) Cassandra (Facebook, 2009) MongoDB (2009) Redis (2009) …
4 NoSQL – «плавающие» схемы данных
5 NoSQL – «страшные архитектуры»
6 NoSQL – распределенные алгоритмы Werner Vogels - VP and CTO of Amazon.com
7 Теорема CAP (Брюера) Проф. Эрик Брюер, 2000, University of California at Berkeley Согласованность данных (Consistency) во всех вычислительных узлах в один момент времени данные не противоречат друг другу Доступность (Availability) любой запрос к распределённой системе завершается корректным откликом Устойчивость к разделению (Partition tolerance) расщепление распределённой системы на несколько изолированных секций не приводит к некорректности отклика от каждой из секций
8 Теорема CAP - CA Система, во всех узлах которой данные согласованы и обеспечена доступность, жертвует устойчивостью к распаду на секции. Такие системы возможны на основе технологического программного обеспечения, поддерживающего транзакционность в смысле ACID. Примерами таких систем могут быть решения на основе кластерных систем управления базами данных или распределённая служба каталогов LDAP.
9 Теорема CAP - CP Распределённая система, в каждый момент обеспечивающая целостный результат и способная функционировать в условиях распада, в ущерб доступности может не выдавать отклик. Устойчивость к распаду на секции требует обеспечения дублирования изменений во всех узлах системы, в этой связи отмечается практическая целесообразность использования в таких системах распределённых пессимистических блокировок для сохранения целостности
10 Теорема CAP - AP Распределённая система, отказывающаяся от целостности результата. Большинство NoSQL-систем принципиально не гарантируют целостности данных, и ссылаются на теорему CAP как на мотив такого ограничения. Задачей при построении AP-систем становится обеспечение некоторого практически целесообразного уровня целостности данных, в этом смысле про AP-системы говорят как о «целостных в конечном итоге» (eventually consistent) или как о «слабо целостных» (weak consistent) DNS, Web Caches, NoSQL …
11 NoSQL – поможет ли? Риски: Eventual consistency Агрессивная денормализация Проблемы со сложными запросами Усложнение приложения-клиента
12 HandlerSocket Автор: Akira Higuchi DeNA Co., Ltd год
13 WebApp + memcached
14 WebApp + HandlerSocket
15 Архитектура Хайлоадблоков Отдельные таблицы БД Свои индексы D7: стандартизированные интерфейсы (Table Data Gateway): сущность (Bitrix\Main\Entity\Base) поля сущности (Bitrix\Main\Entity\Field и его наследники) датаменеджер (Bitrix\Main\Entity\DataManager)
16 Полезные книжечки Изучайте истории успеха Разбирайтесь в архитектуре Используйте подходящие проекту решения Ищите готовые примеры в Bitrix Framework, D7
17 Table Module A single instance that handles the business logic for all rows in a database table or view
18 Table Data Gateway An object that acts as a Gateway to a database table. One instance handles all the rows in the table
19 Настройка подключения к HandlerSocket Ставим PerconaServer или MariaDB или: 1) Качаем исходники MySQL 2) Собираем плагин HandlerSocket Настраиваем «/bitrix/.settings.php»
20 Архитектура Хайлоадблоков \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
fetch(); 2) Вызов API HS: open_index find 3) Обработка результата приложением Работает для ЛЮБЫХ сущностей! Bitrix\Main\UserTable::getById(1); Снижение нагрузки на MySQL" title="Хайлоадблоки и HandlerSocket … 1) $obj = $entityClass::getById( $arData["ID"] )->fetch(); 2) Вызов API HS: open_index find 3) Обработка результата приложением Работает для ЛЮБЫХ сущностей! Bitrix\Main\UserTable::getById(1); Снижение нагрузки на MySQL" class="link_thumb"> 21 Хайлоадблоки и HandlerSocket … 1) $obj = $entityClass::getById( $arData["ID"] )->fetch(); 2) Вызов API HS: open_index find 3) Обработка результата приложением Работает для ЛЮБЫХ сущностей! Bitrix\Main\UserTable::getById(1); Снижение нагрузки на MySQL и сеть. fetch(); 2) Вызов API HS: open_index find 3) Обработка результата приложением Работает для ЛЮБЫХ сущностей! Bitrix\Main\UserTable::getById(1); Снижение нагрузки на MySQL"> fetch(); 2) Вызов API HS: open_index find 3) Обработка результата приложением Работает для ЛЮБЫХ сущностей! Bitrix\Main\UserTable::getById(1); Снижение нагрузки на MySQL и сеть."> fetch(); 2) Вызов API HS: open_index find 3) Обработка результата приложением Работает для ЛЮБЫХ сущностей! Bitrix\Main\UserTable::getById(1); Снижение нагрузки на MySQL" title="Хайлоадблоки и HandlerSocket … 1) $obj = $entityClass::getById( $arData["ID"] )->fetch(); 2) Вызов API HS: open_index find 3) Обработка результата приложением Работает для ЛЮБЫХ сущностей! Bitrix\Main\UserTable::getById(1); Снижение нагрузки на MySQL">
22 Хайлоадблоки и бизнес-логика Наследуем от класса сущности Хайлоадблока: $hlblock = HL\HighloadBlockTable::getById( # )->fetch(); $entity = HL\HighloadBlockTable::compileEntity( $hlblock ); //генерация класса $entityClass = $entity->getDataClass(); class MyDomainObjectTable extends #entityClass# { …//наша бизнес логика проекта }
23 Хайлоадблоки/HandlerSocket Плюсы: Низкие накладные расходы (PHP, меньше запросов SQL) Низкий риск блокировок в БД (свои таблицы) Тысячи, миллионы сущностей, справочники Снижение нагрузки на БД, хостинг Highload проекты, системы с большим объемом информации
24 Спасибо за внимание! Вопросы? Александр
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.