SlideShare una empresa de Scribd logo
1 de 44
Быстрый и простой способ шардирования MySQL
с помощью CUBRID SHARD




Эсен Сагынов
22 апреля 2013 г.
План на сегодня
                                              2




1.   Об NHN
2.   Шардирование в производственных средах
3.   Почему CUBRID SHARD
4.   Как шардировать базы данных MySQL
5.   Демо
6.   CUBRID SHARD в Ndrive
Обо мне
                             3




• Эсен Сагынов (NHN Corp.)

  – @CUBRID
  – fb.com/cubrid

    esen@cubrid.org
Об NHN
Шардирование в производстве

            •    Использует реляционное СУБД с шардированием
            •    Данные хранятся в виде ключ-значение

             •
             •

             •
             •


             •
             •

             •
             •

             •
             •

             •

             •
Существующие решения шардирования
     Название                   Тип                 Требования             Интерфейс

                                            СУБД         Другие

                                            СУБД с
                                                         -   Hibernate
Hibernate shards    Фреймворк, библиотека   поддержкой                   Java
                                                         -   JVM
                                            Hibernate
                                                         -   Hibernate
HiveDB              Фреймворк, библиотека   MySQL                        Java
                                                         -   JVM
                    Промежуточное ПО и                                   Java, C, PHP,
dbShards                                    MySQL
                    библиотека                                           Python, Ruby
Gizzard (Twitter)   Промежуточное ПО        Любая        -   JVM         Java
                    Промежуточное ПО и
Spider for MySQL                            MySQL                        Любой
                    хранилище для MySQL
Spock Proxy         Промежуточное ПО        MySQL                        Любой

Shard-Query         Промежуточное ПО        MySQL                        PHP, RESTful API
                                            -   CUBRID
CUBRID SHARD        Промежуточное ПО                                     Любой
                                            -   MySQL
Категории решений шардирования

•   Библиотека
•   Хранилище
•   Тяжеловесное промежуточное ПО
•   Легковесное промежуточное ПО
Библиотеки и хранилища
                                                             8



Библиотеки           Недостатки
                     •   Требует библиотеку Hibernate/Java
• Hibernate Shards   •   Конфигурация с помощью многих
• HiveDB                 XML файлов
                     •   Не для действующих сервисов


Хранилища            Недостатки
• Spider for MySQL   • Требует изменения
                       хранилища
                     • Не для действующих
                       сервисов
Тяжеловесные промежуточные ПО
                                                 9



dbShards                          Gizzard
• Требует изменения кода          • Неактивный
  приложения
• Необходимо установить агентов
  на каждый сервер СУБД
• Не для действующих сервисов
Легковесное промежуточное ПО
                               10



• Spock Proxy
  – Активный проект
  – Легковесный
  – Гибкий
  – Легко
    настраиваемый
  – Не требует
    изменения кода
    приложения
Блог: http://www.cubrid.org/blog/dev-

Spock Proxy                             platform/database-sharding-platform-at-nhn/


                                                                                      11



                          Spock Proxy
Хранилище для             База данных MySQL
конфигураций
шардирования
Правила шардирования      По модулю
Определение ключа шарда   Полный разбор SQL
Преимущества              Не требует изменения кода программы
Недостатки                • Деградация производительности:
                             • Дополнительный разбор SQL
                             • Слияние результатов
                          • Поддерживает не весь SQL синтаксис
                            MySQL
                          • Однопоточный
Производительность Spock Proxy
                                                                            12



                   • Однопоточный
                   • Разбирает и переписывает SQL
Время выполнения
   500

   400
                                                    Шардинг на уровне
   300                                              приложения
                                                    Spock Proxy
   200

   100                                              CUBRID SHARD

     0
         1   5   10 20 30 50 70 100 200 400          Параллельные клиенты
Spock Proxy

 Активный проект
 Легковесный
 Гибкий
 Легко настраиваемый
 Не требует изменения кода программы
✕Ведет к деградации производительности
14




         CUBRID SHARD

    Легковесное и легко настраиваемое
промежуточное ПО для шардирования MySQL
Блог: http://www.cubrid.org/blog/dev-
                                                       platform/database-sharding-platform-at-nhn/
 Spock Proxy и CUBRID SHARD
                                                                                                     15


                    Spock Proxy                   CUBRID SHARD

Хранилище для       База данных MySQL             Конфигурационный файл
конфигураций
Правила             По модулю                     •   По модулю
шардирования                                      •   Хэш-функции пользователя
Определения ключа   Полный разбор SQL             Поиск SQL подсказки
шарда
                    Преимущества                  Преимущества
                    • Не требует изменения        • Поддерживает CUBRID и MySQL
                       программы                  • Полная поддержка MySQL синтаксиса
                                                  • Высокая производительность
                    Недостатки                        • Нет разбора SQL
                    • Деградация                      • Многопоточность
                       производительности:            • Пул соединения
                         • Дополнительный             • Балансировка нагрузки
                            разбор SQL            • Пользовательские правила шардирования
                         • Слияние результатов    • Легкость конфигураций
                    • Поддерживает только MySQL
                    • Поддерживает не весь SQL    Недостатки
                       синтаксис MySQL            • Требует изменения SQL запросов для
                    • Однопоточный                   вставки SQL подсказок
Факты о CUBRID

 Реляционное СУБД
 ПО с открытым кодом (www.cubrid.org)
 Оптимизирован для веб сервисов
 Высокая производительность
 Поддержка больших баз данных
 Высокая доступность
 Шардирование баз данных
 Более 90% совместимости с синтаксисом MySQL, а также
  аналитические функции Oracle
 ACID транзакции
 Онлайн резервное копирование
 Разрабатывается NHN Corp.
Архитектура CUBRID SHARD



        Единое представление базы данных




              …                  …




         …           или             …
Шардированная среда




                      …




         …     …          …
Установить CUBRID SHARD очень легко!
Страница в документации:

Легкая установка           http://www.cubrid.org/wiki_tutorials/entry/cubrid
                           -installation-instructions




       http://www.cubrid.org/downloads

                   apt-get
                    yum
                     chef ⭐
                     VM
                  EC2 AMI
                cloud service
Настройка очень легкая и интуитивная!
Шаги конфигурирования
                                                     23



1.   Создать шарды
2.   Добавить пользователей в шарды
3.   Создать единую схему в шардах
4.   Настроить CUBRID SHARD
     – Информацию о единой
       шардированной базе данных, к
       которой подключается клиент
     – Информацию о подключениях к
       шардам
     – Правила шардирования           CUBRID SHARD
5.   Запустить CUBRID SHARD
6.   Изменить код программы
     – URL подключения
     – SQL подсказки
# 1. Создать шарды
• Хост 1..N:

  $> mysql –ushard -ppassword –hnode1
  mysql> CREATE DATABASE sharddb;
# 2. Добавить пользователей
• Хост 1..N:

  $> mysql –ushard -ppassword –hnode1
  mysql> USE mysql;
  mysql> GRANT ALL PRIVILEGES ON
  sharddb@localhost TO shard@localhost
  IDENTIFIED BY ‘shard123’
  mysql> GRANT ALL PRIVILEGES ON
  sharddb@localhost TO
  shard@shardBrokerNode IDENTIFIED BY
  ‘shard123’
# 3. Создать единую схему
• Хост 1..N:

  $> mysql –ushard -ppassword –hnode1
  mysql> USE sharddb;
  mysql> CREATE TABLE tbl_users (id BIGINT
  PRIMARY KEY, name VARCHAR(20), age
  SMALLINT)

  $> mysql –ushard -ppassword –hnode2
  …
Страница в документации:
                                   http://www.cubrid.org/manual/91/en/sha
# 4. Легкая настройка              rd.html#configuration-and-setup




• shard.conf
  – Основной файл для конфигурации CUBRID SHARD.
• shard_connection.txt
  – Список шард ID (shard_id) с названиями баз данных
    и хостов, к которым указывает тот или иной шард
    ID.
• shard_keys.txt
  – Список названий колонок шардированной таблицы
    с их правилами шардирования.
Страница в документации:

 shard.conf                         http://www.cubrid.org/manual/91/en/shard.html#
                                    default-configuration-file-shard-conf




Задать:
1. SHARD_DB_NAME
2. SHARD_DB_USER
3. SHARD_DB_PASSWORD
4. APPL_SERVER

…
SHARD_DB_NAME       =   sharddb
SHARD_DB_USER       =   shard
SHARD_DB_PASSWORD   =   shard123
APPL_SERVER         =   CAS_MYSQL
…
Страница в документации:

 shard_connection.txt                       http://www.cubrid.org/manual/91/en/shard.html#
                                            setting-shard-metadata




Задать:
1. Шард ID
2. Настоящее имя базы данных на хосте
3. Название удаленного/локального хоста


# shard-id     real-db-name     connection-info
0              sharddb          mysqlA:3306
1              sharddb          mysqlB:3306
2              sharddb          mysqlC:3306
…

   ** Название хостов обязательно должно быть идентичным
      выводу команды hostname на каждом из хостов.
Страница в документации:

 shard_keys.txt                    http://www.cubrid.org/manual/91/en/shard.html#
                                   setting-shard-metadata




Задать:
1. Нижний предел шард ключа
2. Верхний предел шард ключа
3. Шард ID

[%student_no]
# min   max     shard_id
0       63      0          ** По умолчанию правило
64      127     1             шардирования - по
128     191     2             модулю 256
192     255     3             (SHARD_KEY_MODULAR в
                              shard.conf ).
Страница в документации:

 Пользовательская библиотека                            http://www.cubrid.org/manual/9
                                                        1/en/shard.html#setting-user-
                                                        defined-hash-function


                                   int fn_shard_key_udf(int type, void *val)
shard.conf                         {
                                       int mod = 2;
1. SHARD_KEY_LIBRARY_NAME
                                       if (val == NULL)
2. SHARD_KEY_FUNCTION_NAME             {
                                              return ERROR_ON_ARGUMENT;
                                       }
[%student_no]
SHARD_KEY_LIBRARY_NAME=$CUBRID/c       switch(type)
                                       {
onf/shard_key_udf.so                          case SHARD_U_TYPE_INT:
SHARD_KEY_FUNCTION_NAME                       {
=fn_shard_key_udf                                 int ival;
                                                  ival = (int) (*(int *)val);
                                                  return ival % 2;
                                              }
                                                  break;
                                              case SHARD_U_TYPE_STRING:
                                                  return ERROR_ON_MAKE_SHARD_KEY;
                                              default:
                                                  return ERROR_ON_ARGUMENT;
                                       }
                                       return ERROR_ON_MAKE_SHARD_KEY;
                                   }
# 5. Запустить CUBRID SHARD



 $> cubrid shard start
 @ cubrid shard start ++
 cubrid shard start: success
# 6. URL подключения




 connectionURL   =
 "jdbc:cubrid:node1:45511:sharddb:shard:shard123:
 ?althosts=node2:port2,node3:port3
 &loadBalance=true";
Шардированные запросы




 SELECT name FROM student WHERE
 student_no = /*+ shard_key */ ?;

                                •

                                •
Типы SQL подсказок
String query = "SELECT name FROM student WHERE student_no = /*+ shard_key */ ?; ";
PrepareStatement query_stmt = connection.prepareStatement(query);
query_stmt.setInt(1,100);
ResultSet rs = query_stmt.executeQuery();
// получить результат




                                                 range
                                key_column    (hash result)   shard_id
                                             min        max
                                student_no    0          63      0
                                student_no   64         127      1
                                student_no   128        191      2
                                student_no   192        255      3
MySQL Sharding DEMO

      Требования:

      •   1ГБ свободного RAM
      •   3ГБ свободного места для 2 VM
      •   VirtualBox
      •   Vagrant
MySQL Sharding DEMO
                                    39




https://github.com/kadishmal/cubr
           id-shard-demo
CUBRID SHARD

• Легко
  – Конфигурация без хлопот!
  – Без сюрпризов
• Надежный
  – Высокая производительность
  – Нет SPOF
• Open source
  – Разрабатывается NHN Corp.
Недостатки CUBRID SHARD

Необходимо вставлять SQL подсказку во все
 запросы
Пока нет автоматической балансировки
 данных
  Что требует тщательного планирования
   стратегии шардирования.
Нет графического инструмента для
 мониторинга. Только инструменты для
 командной строки.
CUBRID SHARD лучше всего подойдет…
                                           43




•   для действующих Веб сервисов
•   с быстрорастущим объемом данных,
•   которым необходим стабильное решение
•   с возможностью легкой настройки
•   в рамках ограниченного времени
Облачное хранилище Ndrive
                                                          44



• Мета данные файлов пользователей
• Шардирование по ID пользователя
• 24 мастер шардов
  – Intel(R) Xeon(R) L5640 @ 2.27GHz * 8, 16G RAM, 820G
    HDD
• 10ТБ данных
• Характеристика нагрузки:
  – 75~80% SELECT vs. 20~25% INSERT
  – Avg. ~3000 QPS/шард
  – Avg. ~5% CPU нагрузки на шард
Облачное хранилище Ndrive
                                                          45


• 1 SHARD Брокер               • Нет деградации
• 4 Прокси на Брокер             производительности
• 50 CAS на Прокси               после установки CUBRID
                                 SHARD




     64       128      192       256     320
                       Vuser
CUBRID SHARD Next

Балансировка данных
Мониторинг шардов
Функции агрегации
Спасибо!
                             47




• Сагынов Эсен (NHN Corp.)

  – @CUBRID
  – fb.com/cubrid

    esen@cubrid.org

Más contenido relacionado

La actualidad más candente

Ленвендо.Построение системного ландшафта высоконагруженного проекта
Ленвендо.Построение системного ландшафта высоконагруженного проектаЛенвендо.Построение системного ландшафта высоконагруженного проекта
Ленвендо.Построение системного ландшафта высоконагруженного проектаLenvendo
 
DUMP-2012 - Только хардкор! - "Архитектура и запуск облачного сервиса в Amazo...
DUMP-2012 - Только хардкор! - "Архитектура и запуск облачного сервиса в Amazo...DUMP-2012 - Только хардкор! - "Архитектура и запуск облачного сервиса в Amazo...
DUMP-2012 - Только хардкор! - "Архитектура и запуск облачного сервиса в Amazo...it-people
 
Миграция существующих приложений в Windows Azure
Миграция существующих приложений в Windows AzureМиграция существующих приложений в Windows Azure
Миграция существующих приложений в Windows AzureNatalia Efimtseva
 
Велосипедостраительство в NoSQL, строим собственное NoSQL хранилище
Велосипедостраительство в NoSQL, строим собственное NoSQL хранилищеВелосипедостраительство в NoSQL, строим собственное NoSQL хранилище
Велосипедостраительство в NoSQL, строим собственное NoSQL хранилищеAlexandre Kalendarev
 
Использование Sedna в WEB
Использование Sedna в WEBИспользование Sedna в WEB
Использование Sedna в WEBAlexandre Kalendarev
 
CodeFest 2012. Рыжиков С. — Архитектура и запуск облачного сервиса в Amazon A...
CodeFest 2012. Рыжиков С. — Архитектура и запуск облачного сервиса в Amazon A...CodeFest 2012. Рыжиков С. — Архитектура и запуск облачного сервиса в Amazon A...
CodeFest 2012. Рыжиков С. — Архитектура и запуск облачного сервиса в Amazon A...CodeFest
 
Clouds NN 2012 Александр Демидов "Битрикс24 архитектура и опыт эксплуатации о...
Clouds NN 2012 Александр Демидов "Битрикс24 архитектура и опыт эксплуатации о...Clouds NN 2012 Александр Демидов "Битрикс24 архитектура и опыт эксплуатации о...
Clouds NN 2012 Александр Демидов "Битрикс24 архитектура и опыт эксплуатации о...Clouds NN
 
IBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаков
IBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаковIBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаков
IBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаковMaxim Zinal
 
Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...
Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...
Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...Uptime Community
 
Архитектура HAWQ / Алексей Грищенко (Pivotal)
Архитектура HAWQ / Алексей Грищенко (Pivotal)Архитектура HAWQ / Алексей Грищенко (Pivotal)
Архитектура HAWQ / Алексей Грищенко (Pivotal)Ontico
 
Александр Соловьёв, Griddynamics.com
Александр Соловьёв, Griddynamics.comАлександр Соловьёв, Griddynamics.com
Александр Соловьёв, Griddynamics.comOntico
 
андрей паньгин
андрей паньгинандрей паньгин
андрей паньгинkuchinskaya
 
Impress Application Server for node.js (ru)
Impress Application Server for node.js (ru)Impress Application Server for node.js (ru)
Impress Application Server for node.js (ru)Timur Shemsedinov
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"Technopark
 
Oracle NoSQL Database
Oracle NoSQL DatabaseOracle NoSQL Database
Oracle NoSQL DatabaseAndrey Akulov
 
Devconf2013 new-features-in-mysql-and-mariadb
Devconf2013 new-features-in-mysql-and-mariadbDevconf2013 new-features-in-mysql-and-mariadb
Devconf2013 new-features-in-mysql-and-mariadbSergey Petrunya
 

La actualidad más candente (20)

Ленвендо.Построение системного ландшафта высоконагруженного проекта
Ленвендо.Построение системного ландшафта высоконагруженного проектаЛенвендо.Построение системного ландшафта высоконагруженного проекта
Ленвендо.Построение системного ландшафта высоконагруженного проекта
 
DUMP-2012 - Только хардкор! - "Архитектура и запуск облачного сервиса в Amazo...
DUMP-2012 - Только хардкор! - "Архитектура и запуск облачного сервиса в Amazo...DUMP-2012 - Только хардкор! - "Архитектура и запуск облачного сервиса в Amazo...
DUMP-2012 - Только хардкор! - "Архитектура и запуск облачного сервиса в Amazo...
 
Миграция существующих приложений в Windows Azure
Миграция существующих приложений в Windows AzureМиграция существующих приложений в Windows Azure
Миграция существующих приложений в Windows Azure
 
Велосипедостраительство в NoSQL, строим собственное NoSQL хранилище
Велосипедостраительство в NoSQL, строим собственное NoSQL хранилищеВелосипедостраительство в NoSQL, строим собственное NoSQL хранилище
Велосипедостраительство в NoSQL, строим собственное NoSQL хранилище
 
Bitrix24 (DevConf)
Bitrix24 (DevConf)Bitrix24 (DevConf)
Bitrix24 (DevConf)
 
Использование Sedna в WEB
Использование Sedna в WEBИспользование Sedna в WEB
Использование Sedna в WEB
 
CodeFest 2012. Рыжиков С. — Архитектура и запуск облачного сервиса в Amazon A...
CodeFest 2012. Рыжиков С. — Архитектура и запуск облачного сервиса в Amazon A...CodeFest 2012. Рыжиков С. — Архитектура и запуск облачного сервиса в Amazon A...
CodeFest 2012. Рыжиков С. — Архитектура и запуск облачного сервиса в Amazon A...
 
Clouds NN 2012 Александр Демидов "Битрикс24 архитектура и опыт эксплуатации о...
Clouds NN 2012 Александр Демидов "Битрикс24 архитектура и опыт эксплуатации о...Clouds NN 2012 Александр Демидов "Битрикс24 архитектура и опыт эксплуатации о...
Clouds NN 2012 Александр Демидов "Битрикс24 архитектура и опыт эксплуатации о...
 
IBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаков
IBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаковIBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаков
IBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаков
 
Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...
Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...
Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...
 
Веб-кластер
Веб-кластерВеб-кластер
Веб-кластер
 
Архитектура HAWQ / Алексей Грищенко (Pivotal)
Архитектура HAWQ / Алексей Грищенко (Pivotal)Архитектура HAWQ / Алексей Грищенко (Pivotal)
Архитектура HAWQ / Алексей Грищенко (Pivotal)
 
Александр Соловьёв, Griddynamics.com
Александр Соловьёв, Griddynamics.comАлександр Соловьёв, Griddynamics.com
Александр Соловьёв, Griddynamics.com
 
Oracle
OracleOracle
Oracle
 
андрей паньгин
андрей паньгинандрей паньгин
андрей паньгин
 
Impress Application Server for node.js (ru)
Impress Application Server for node.js (ru)Impress Application Server for node.js (ru)
Impress Application Server for node.js (ru)
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
 
No sql.mongodb scaling
No sql.mongodb scalingNo sql.mongodb scaling
No sql.mongodb scaling
 
Oracle NoSQL Database
Oracle NoSQL DatabaseOracle NoSQL Database
Oracle NoSQL Database
 
Devconf2013 new-features-in-mysql-and-mariadb
Devconf2013 new-features-in-mysql-and-mariadbDevconf2013 new-features-in-mysql-and-mariadb
Devconf2013 new-features-in-mysql-and-mariadb
 

Similar a Быстрый и простой способ шардирования MySQL с помощью CUBRID SHARD - 2013 RIT++, Москва

Hosting for forbes.ru_
Hosting for forbes.ru_Hosting for forbes.ru_
Hosting for forbes.ru_drupalconf
 
Опыт использования NoSQL-хранилищ (Андрей Новиков)
Опыт использования NoSQL-хранилищ (Андрей Новиков)Опыт использования NoSQL-хранилищ (Андрей Новиков)
Опыт использования NoSQL-хранилищ (Андрей Новиков)Olga Lavrentieva
 
Mysql replication DevConf 2012
Mysql replication DevConf 2012Mysql replication DevConf 2012
Mysql replication DevConf 2012Alex Chistyakov
 
Практический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQLПрактический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQLAlex Chistyakov
 
Юрий Буянов «Архитектура Goozy»
Юрий Буянов «Архитектура Goozy»Юрий Буянов «Архитектура Goozy»
Юрий Буянов «Архитектура Goozy»e-Legion
 
YuryByyanov (e-legion) @ CodeCamp2011
YuryByyanov (e-legion) @ CodeCamp2011YuryByyanov (e-legion) @ CodeCamp2011
YuryByyanov (e-legion) @ CodeCamp2011CodeCamp
 
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)Ontico
 
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС «Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС 2ГИС Технологии
 
ORM battle. MyBatis vs Hibernate
ORM battle. MyBatis vs HibernateORM battle. MyBatis vs Hibernate
ORM battle. MyBatis vs HibernateAlexey Zinoviev
 
2012-12-01 03 Битва ORM: Hibernate vs MyBatis. Давайте жить дружно!
2012-12-01 03 Битва ORM: Hibernate vs MyBatis. Давайте жить дружно!2012-12-01 03 Битва ORM: Hibernate vs MyBatis. Давайте жить дружно!
2012-12-01 03 Битва ORM: Hibernate vs MyBatis. Давайте жить дружно!Омские ИТ-субботники
 
Drupal в облаке - Владимир Юнев
Drupal в облаке - Владимир ЮневDrupal в облаке - Владимир Юнев
Drupal в облаке - Владимир ЮневDrupalCamp MSK
 
CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагр...
CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагр...CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагр...
CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагр...CodeFest
 
Архитектура OpenStack
Архитектура OpenStackАрхитектура OpenStack
Архитектура OpenStackMirantis
 
Jelastic PaaS for DevOps: Hybrid Cloud based on Microsoft Azure
Jelastic PaaS for DevOps: Hybrid Cloud based on Microsoft AzureJelastic PaaS for DevOps: Hybrid Cloud based on Microsoft Azure
Jelastic PaaS for DevOps: Hybrid Cloud based on Microsoft AzureDmitry Lazarenko
 
CodeFest 2013. Иванов В. — Уменьшение расхода оперативной памяти в Java-прило...
CodeFest 2013. Иванов В. — Уменьшение расхода оперативной памяти в Java-прило...CodeFest 2013. Иванов В. — Уменьшение расхода оперативной памяти в Java-прило...
CodeFest 2013. Иванов В. — Уменьшение расхода оперативной памяти в Java-прило...CodeFest
 
Компетенции Адеква
Компетенции АдекваКомпетенции Адеква
Компетенции АдекваADEKVA
 
CodeFest 2012. Сидельников А. — Опыт создания DSL на Ruby. Где применить, как...
CodeFest 2012. Сидельников А. — Опыт создания DSL на Ruby. Где применить, как...CodeFest 2012. Сидельников А. — Опыт создания DSL на Ruby. Где применить, как...
CodeFest 2012. Сидельников А. — Опыт создания DSL на Ruby. Где применить, как...CodeFest
 
По Вашей просьбе, продукты Atlassian в Docker
По Вашей просьбе, продукты Atlassian в DockerПо Вашей просьбе, продукты Atlassian в Docker
По Вашей просьбе, продукты Atlassian в DockerGonchik Tsymzhitov
 
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"Alexey Zinoviev
 

Similar a Быстрый и простой способ шардирования MySQL с помощью CUBRID SHARD - 2013 RIT++, Москва (20)

Hosting for forbes.ru_
Hosting for forbes.ru_Hosting for forbes.ru_
Hosting for forbes.ru_
 
Опыт использования NoSQL-хранилищ (Андрей Новиков)
Опыт использования NoSQL-хранилищ (Андрей Новиков)Опыт использования NoSQL-хранилищ (Андрей Новиков)
Опыт использования NoSQL-хранилищ (Андрей Новиков)
 
Mysql replication DevConf 2012
Mysql replication DevConf 2012Mysql replication DevConf 2012
Mysql replication DevConf 2012
 
Практический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQLПрактический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQL
 
Юрий Буянов «Архитектура Goozy»
Юрий Буянов «Архитектура Goozy»Юрий Буянов «Архитектура Goozy»
Юрий Буянов «Архитектура Goozy»
 
YuryByyanov (e-legion) @ CodeCamp2011
YuryByyanov (e-legion) @ CodeCamp2011YuryByyanov (e-legion) @ CodeCamp2011
YuryByyanov (e-legion) @ CodeCamp2011
 
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
 
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС «Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС
 
ORM battle. MyBatis vs Hibernate
ORM battle. MyBatis vs HibernateORM battle. MyBatis vs Hibernate
ORM battle. MyBatis vs Hibernate
 
2012-12-01 03 Битва ORM: Hibernate vs MyBatis. Давайте жить дружно!
2012-12-01 03 Битва ORM: Hibernate vs MyBatis. Давайте жить дружно!2012-12-01 03 Битва ORM: Hibernate vs MyBatis. Давайте жить дружно!
2012-12-01 03 Битва ORM: Hibernate vs MyBatis. Давайте жить дружно!
 
Drupal в облаке - Владимир Юнев
Drupal в облаке - Владимир ЮневDrupal в облаке - Владимир Юнев
Drupal в облаке - Владимир Юнев
 
CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагр...
CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагр...CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагр...
CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагр...
 
Архитектура OpenStack
Архитектура OpenStackАрхитектура OpenStack
Архитектура OpenStack
 
Jelastic PaaS for DevOps: Hybrid Cloud based on Microsoft Azure
Jelastic PaaS for DevOps: Hybrid Cloud based on Microsoft AzureJelastic PaaS for DevOps: Hybrid Cloud based on Microsoft Azure
Jelastic PaaS for DevOps: Hybrid Cloud based on Microsoft Azure
 
MS Swit 2012 - SQL Server 2012
MS Swit 2012 - SQL Server 2012MS Swit 2012 - SQL Server 2012
MS Swit 2012 - SQL Server 2012
 
CodeFest 2013. Иванов В. — Уменьшение расхода оперативной памяти в Java-прило...
CodeFest 2013. Иванов В. — Уменьшение расхода оперативной памяти в Java-прило...CodeFest 2013. Иванов В. — Уменьшение расхода оперативной памяти в Java-прило...
CodeFest 2013. Иванов В. — Уменьшение расхода оперативной памяти в Java-прило...
 
Компетенции Адеква
Компетенции АдекваКомпетенции Адеква
Компетенции Адеква
 
CodeFest 2012. Сидельников А. — Опыт создания DSL на Ruby. Где применить, как...
CodeFest 2012. Сидельников А. — Опыт создания DSL на Ruby. Где применить, как...CodeFest 2012. Сидельников А. — Опыт создания DSL на Ruby. Где применить, как...
CodeFest 2012. Сидельников А. — Опыт создания DSL на Ruby. Где применить, как...
 
По Вашей просьбе, продукты Atlassian в Docker
По Вашей просьбе, продукты Atlassian в DockerПо Вашей просьбе, продукты Atlassian в Docker
По Вашей просьбе, продукты Atlassian в Docker
 
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
 

Más de CUBRID

Database Sharding the Right Way: Easy, Reliable, and Open source - HighLoad++...
Database Sharding the Right Way: Easy, Reliable, and Open source - HighLoad++...Database Sharding the Right Way: Easy, Reliable, and Open source - HighLoad++...
Database Sharding the Right Way: Easy, Reliable, and Open source - HighLoad++...CUBRID
 
Installing CUBRID Database and CUBRID Manager on Windows
Installing CUBRID Database and CUBRID Manager on WindowsInstalling CUBRID Database and CUBRID Manager on Windows
Installing CUBRID Database and CUBRID Manager on WindowsCUBRID
 
Growing in the Wild. The story by CUBRID Database Developers.
Growing in the Wild. The story by CUBRID Database Developers.Growing in the Wild. The story by CUBRID Database Developers.
Growing in the Wild. The story by CUBRID Database Developers.CUBRID
 
CUBRID Cluster Introduction
CUBRID Cluster IntroductionCUBRID Cluster Introduction
CUBRID Cluster IntroductionCUBRID
 
CUBRID Inside - Architecture, Source & Management Components
CUBRID Inside - Architecture, Source & Management ComponentsCUBRID Inside - Architecture, Source & Management Components
CUBRID Inside - Architecture, Source & Management ComponentsCUBRID
 
CUBRID HA - Guaranteed Way to Never-Die Web Services - OSCON 2011
CUBRID HA - Guaranteed Way to Never-Die Web Services - OSCON 2011CUBRID HA - Guaranteed Way to Never-Die Web Services - OSCON 2011
CUBRID HA - Guaranteed Way to Never-Die Web Services - OSCON 2011CUBRID
 
CUBRID Developer's Course
CUBRID Developer's CourseCUBRID Developer's Course
CUBRID Developer's CourseCUBRID
 
The Architecture of CUBRID
The Architecture of CUBRIDThe Architecture of CUBRID
The Architecture of CUBRIDCUBRID
 
Installing CUBRID on Windows
Installing CUBRID on WindowsInstalling CUBRID on Windows
Installing CUBRID on WindowsCUBRID
 
Installing CUBRID on Linux
Installing CUBRID on LinuxInstalling CUBRID on Linux
Installing CUBRID on LinuxCUBRID
 
Cubrid Inside 5th Session 4 Replication
Cubrid Inside 5th Session 4 ReplicationCubrid Inside 5th Session 4 Replication
Cubrid Inside 5th Session 4 ReplicationCUBRID
 
Cubrid Inside 5th Session 3 Migration
Cubrid Inside 5th Session 3 MigrationCubrid Inside 5th Session 3 Migration
Cubrid Inside 5th Session 3 MigrationCUBRID
 
Cubrid Inside 5th Session 2 Ha Implementation
Cubrid Inside 5th Session 2 Ha ImplementationCubrid Inside 5th Session 2 Ha Implementation
Cubrid Inside 5th Session 2 Ha ImplementationCUBRID
 

Más de CUBRID (13)

Database Sharding the Right Way: Easy, Reliable, and Open source - HighLoad++...
Database Sharding the Right Way: Easy, Reliable, and Open source - HighLoad++...Database Sharding the Right Way: Easy, Reliable, and Open source - HighLoad++...
Database Sharding the Right Way: Easy, Reliable, and Open source - HighLoad++...
 
Installing CUBRID Database and CUBRID Manager on Windows
Installing CUBRID Database and CUBRID Manager on WindowsInstalling CUBRID Database and CUBRID Manager on Windows
Installing CUBRID Database and CUBRID Manager on Windows
 
Growing in the Wild. The story by CUBRID Database Developers.
Growing in the Wild. The story by CUBRID Database Developers.Growing in the Wild. The story by CUBRID Database Developers.
Growing in the Wild. The story by CUBRID Database Developers.
 
CUBRID Cluster Introduction
CUBRID Cluster IntroductionCUBRID Cluster Introduction
CUBRID Cluster Introduction
 
CUBRID Inside - Architecture, Source & Management Components
CUBRID Inside - Architecture, Source & Management ComponentsCUBRID Inside - Architecture, Source & Management Components
CUBRID Inside - Architecture, Source & Management Components
 
CUBRID HA - Guaranteed Way to Never-Die Web Services - OSCON 2011
CUBRID HA - Guaranteed Way to Never-Die Web Services - OSCON 2011CUBRID HA - Guaranteed Way to Never-Die Web Services - OSCON 2011
CUBRID HA - Guaranteed Way to Never-Die Web Services - OSCON 2011
 
CUBRID Developer's Course
CUBRID Developer's CourseCUBRID Developer's Course
CUBRID Developer's Course
 
The Architecture of CUBRID
The Architecture of CUBRIDThe Architecture of CUBRID
The Architecture of CUBRID
 
Installing CUBRID on Windows
Installing CUBRID on WindowsInstalling CUBRID on Windows
Installing CUBRID on Windows
 
Installing CUBRID on Linux
Installing CUBRID on LinuxInstalling CUBRID on Linux
Installing CUBRID on Linux
 
Cubrid Inside 5th Session 4 Replication
Cubrid Inside 5th Session 4 ReplicationCubrid Inside 5th Session 4 Replication
Cubrid Inside 5th Session 4 Replication
 
Cubrid Inside 5th Session 3 Migration
Cubrid Inside 5th Session 3 MigrationCubrid Inside 5th Session 3 Migration
Cubrid Inside 5th Session 3 Migration
 
Cubrid Inside 5th Session 2 Ha Implementation
Cubrid Inside 5th Session 2 Ha ImplementationCubrid Inside 5th Session 2 Ha Implementation
Cubrid Inside 5th Session 2 Ha Implementation
 

Быстрый и простой способ шардирования MySQL с помощью CUBRID SHARD - 2013 RIT++, Москва

  • 1. Быстрый и простой способ шардирования MySQL с помощью CUBRID SHARD Эсен Сагынов 22 апреля 2013 г.
  • 2. План на сегодня 2 1. Об NHN 2. Шардирование в производственных средах 3. Почему CUBRID SHARD 4. Как шардировать базы данных MySQL 5. Демо 6. CUBRID SHARD в Ndrive
  • 3. Обо мне 3 • Эсен Сагынов (NHN Corp.) – @CUBRID – fb.com/cubrid esen@cubrid.org
  • 5. Шардирование в производстве • Использует реляционное СУБД с шардированием • Данные хранятся в виде ключ-значение • • • • • • • • • • • •
  • 6. Существующие решения шардирования Название Тип Требования Интерфейс СУБД Другие СУБД с - Hibernate Hibernate shards Фреймворк, библиотека поддержкой Java - JVM Hibernate - Hibernate HiveDB Фреймворк, библиотека MySQL Java - JVM Промежуточное ПО и Java, C, PHP, dbShards MySQL библиотека Python, Ruby Gizzard (Twitter) Промежуточное ПО Любая - JVM Java Промежуточное ПО и Spider for MySQL MySQL Любой хранилище для MySQL Spock Proxy Промежуточное ПО MySQL Любой Shard-Query Промежуточное ПО MySQL PHP, RESTful API - CUBRID CUBRID SHARD Промежуточное ПО Любой - MySQL
  • 7. Категории решений шардирования • Библиотека • Хранилище • Тяжеловесное промежуточное ПО • Легковесное промежуточное ПО
  • 8. Библиотеки и хранилища 8 Библиотеки Недостатки • Требует библиотеку Hibernate/Java • Hibernate Shards • Конфигурация с помощью многих • HiveDB XML файлов • Не для действующих сервисов Хранилища Недостатки • Spider for MySQL • Требует изменения хранилища • Не для действующих сервисов
  • 9. Тяжеловесные промежуточные ПО 9 dbShards Gizzard • Требует изменения кода • Неактивный приложения • Необходимо установить агентов на каждый сервер СУБД • Не для действующих сервисов
  • 10. Легковесное промежуточное ПО 10 • Spock Proxy – Активный проект – Легковесный – Гибкий – Легко настраиваемый – Не требует изменения кода приложения
  • 11. Блог: http://www.cubrid.org/blog/dev- Spock Proxy platform/database-sharding-platform-at-nhn/ 11 Spock Proxy Хранилище для База данных MySQL конфигураций шардирования Правила шардирования По модулю Определение ключа шарда Полный разбор SQL Преимущества Не требует изменения кода программы Недостатки • Деградация производительности: • Дополнительный разбор SQL • Слияние результатов • Поддерживает не весь SQL синтаксис MySQL • Однопоточный
  • 12. Производительность Spock Proxy 12 • Однопоточный • Разбирает и переписывает SQL Время выполнения 500 400 Шардинг на уровне 300 приложения Spock Proxy 200 100 CUBRID SHARD 0 1 5 10 20 30 50 70 100 200 400 Параллельные клиенты
  • 13. Spock Proxy  Активный проект  Легковесный  Гибкий  Легко настраиваемый  Не требует изменения кода программы ✕Ведет к деградации производительности
  • 14. 14 CUBRID SHARD Легковесное и легко настраиваемое промежуточное ПО для шардирования MySQL
  • 15. Блог: http://www.cubrid.org/blog/dev- platform/database-sharding-platform-at-nhn/ Spock Proxy и CUBRID SHARD 15 Spock Proxy CUBRID SHARD Хранилище для База данных MySQL Конфигурационный файл конфигураций Правила По модулю • По модулю шардирования • Хэш-функции пользователя Определения ключа Полный разбор SQL Поиск SQL подсказки шарда Преимущества Преимущества • Не требует изменения • Поддерживает CUBRID и MySQL программы • Полная поддержка MySQL синтаксиса • Высокая производительность Недостатки • Нет разбора SQL • Деградация • Многопоточность производительности: • Пул соединения • Дополнительный • Балансировка нагрузки разбор SQL • Пользовательские правила шардирования • Слияние результатов • Легкость конфигураций • Поддерживает только MySQL • Поддерживает не весь SQL Недостатки синтаксис MySQL • Требует изменения SQL запросов для • Однопоточный вставки SQL подсказок
  • 16. Факты о CUBRID  Реляционное СУБД  ПО с открытым кодом (www.cubrid.org)  Оптимизирован для веб сервисов  Высокая производительность  Поддержка больших баз данных  Высокая доступность  Шардирование баз данных  Более 90% совместимости с синтаксисом MySQL, а также аналитические функции Oracle  ACID транзакции  Онлайн резервное копирование  Разрабатывается NHN Corp.
  • 17. Архитектура CUBRID SHARD Единое представление базы данных … … … или …
  • 19. Установить CUBRID SHARD очень легко!
  • 20. Страница в документации: Легкая установка http://www.cubrid.org/wiki_tutorials/entry/cubrid -installation-instructions http://www.cubrid.org/downloads apt-get yum chef ⭐ VM EC2 AMI cloud service
  • 21. Настройка очень легкая и интуитивная!
  • 22. Шаги конфигурирования 23 1. Создать шарды 2. Добавить пользователей в шарды 3. Создать единую схему в шардах 4. Настроить CUBRID SHARD – Информацию о единой шардированной базе данных, к которой подключается клиент – Информацию о подключениях к шардам – Правила шардирования CUBRID SHARD 5. Запустить CUBRID SHARD 6. Изменить код программы – URL подключения – SQL подсказки
  • 23. # 1. Создать шарды • Хост 1..N: $> mysql –ushard -ppassword –hnode1 mysql> CREATE DATABASE sharddb;
  • 24. # 2. Добавить пользователей • Хост 1..N: $> mysql –ushard -ppassword –hnode1 mysql> USE mysql; mysql> GRANT ALL PRIVILEGES ON sharddb@localhost TO shard@localhost IDENTIFIED BY ‘shard123’ mysql> GRANT ALL PRIVILEGES ON sharddb@localhost TO shard@shardBrokerNode IDENTIFIED BY ‘shard123’
  • 25. # 3. Создать единую схему • Хост 1..N: $> mysql –ushard -ppassword –hnode1 mysql> USE sharddb; mysql> CREATE TABLE tbl_users (id BIGINT PRIMARY KEY, name VARCHAR(20), age SMALLINT) $> mysql –ushard -ppassword –hnode2 …
  • 26. Страница в документации: http://www.cubrid.org/manual/91/en/sha # 4. Легкая настройка rd.html#configuration-and-setup • shard.conf – Основной файл для конфигурации CUBRID SHARD. • shard_connection.txt – Список шард ID (shard_id) с названиями баз данных и хостов, к которым указывает тот или иной шард ID. • shard_keys.txt – Список названий колонок шардированной таблицы с их правилами шардирования.
  • 27. Страница в документации: shard.conf http://www.cubrid.org/manual/91/en/shard.html# default-configuration-file-shard-conf Задать: 1. SHARD_DB_NAME 2. SHARD_DB_USER 3. SHARD_DB_PASSWORD 4. APPL_SERVER … SHARD_DB_NAME = sharddb SHARD_DB_USER = shard SHARD_DB_PASSWORD = shard123 APPL_SERVER = CAS_MYSQL …
  • 28. Страница в документации: shard_connection.txt http://www.cubrid.org/manual/91/en/shard.html# setting-shard-metadata Задать: 1. Шард ID 2. Настоящее имя базы данных на хосте 3. Название удаленного/локального хоста # shard-id real-db-name connection-info 0 sharddb mysqlA:3306 1 sharddb mysqlB:3306 2 sharddb mysqlC:3306 … ** Название хостов обязательно должно быть идентичным выводу команды hostname на каждом из хостов.
  • 29. Страница в документации: shard_keys.txt http://www.cubrid.org/manual/91/en/shard.html# setting-shard-metadata Задать: 1. Нижний предел шард ключа 2. Верхний предел шард ключа 3. Шард ID [%student_no] # min max shard_id 0 63 0 ** По умолчанию правило 64 127 1 шардирования - по 128 191 2 модулю 256 192 255 3 (SHARD_KEY_MODULAR в shard.conf ).
  • 30. Страница в документации: Пользовательская библиотека http://www.cubrid.org/manual/9 1/en/shard.html#setting-user- defined-hash-function int fn_shard_key_udf(int type, void *val) shard.conf { int mod = 2; 1. SHARD_KEY_LIBRARY_NAME if (val == NULL) 2. SHARD_KEY_FUNCTION_NAME { return ERROR_ON_ARGUMENT; } [%student_no] SHARD_KEY_LIBRARY_NAME=$CUBRID/c switch(type) { onf/shard_key_udf.so case SHARD_U_TYPE_INT: SHARD_KEY_FUNCTION_NAME { =fn_shard_key_udf int ival; ival = (int) (*(int *)val); return ival % 2; } break; case SHARD_U_TYPE_STRING: return ERROR_ON_MAKE_SHARD_KEY; default: return ERROR_ON_ARGUMENT; } return ERROR_ON_MAKE_SHARD_KEY; }
  • 31. # 5. Запустить CUBRID SHARD $> cubrid shard start @ cubrid shard start ++ cubrid shard start: success
  • 32. # 6. URL подключения connectionURL = "jdbc:cubrid:node1:45511:sharddb:shard:shard123: ?althosts=node2:port2,node3:port3 &loadBalance=true";
  • 33. Шардированные запросы SELECT name FROM student WHERE student_no = /*+ shard_key */ ?; • •
  • 35. String query = "SELECT name FROM student WHERE student_no = /*+ shard_key */ ?; "; PrepareStatement query_stmt = connection.prepareStatement(query); query_stmt.setInt(1,100); ResultSet rs = query_stmt.executeQuery(); // получить результат range key_column (hash result) shard_id min max student_no 0 63 0 student_no 64 127 1 student_no 128 191 2 student_no 192 255 3
  • 36. MySQL Sharding DEMO Требования: • 1ГБ свободного RAM • 3ГБ свободного места для 2 VM • VirtualBox • Vagrant
  • 37. MySQL Sharding DEMO 39 https://github.com/kadishmal/cubr id-shard-demo
  • 38. CUBRID SHARD • Легко – Конфигурация без хлопот! – Без сюрпризов • Надежный – Высокая производительность – Нет SPOF • Open source – Разрабатывается NHN Corp.
  • 39. Недостатки CUBRID SHARD Необходимо вставлять SQL подсказку во все запросы Пока нет автоматической балансировки данных Что требует тщательного планирования стратегии шардирования. Нет графического инструмента для мониторинга. Только инструменты для командной строки.
  • 40. CUBRID SHARD лучше всего подойдет… 43 • для действующих Веб сервисов • с быстрорастущим объемом данных, • которым необходим стабильное решение • с возможностью легкой настройки • в рамках ограниченного времени
  • 41. Облачное хранилище Ndrive 44 • Мета данные файлов пользователей • Шардирование по ID пользователя • 24 мастер шардов – Intel(R) Xeon(R) L5640 @ 2.27GHz * 8, 16G RAM, 820G HDD • 10ТБ данных • Характеристика нагрузки: – 75~80% SELECT vs. 20~25% INSERT – Avg. ~3000 QPS/шард – Avg. ~5% CPU нагрузки на шард
  • 42. Облачное хранилище Ndrive 45 • 1 SHARD Брокер • Нет деградации • 4 Прокси на Брокер производительности • 50 CAS на Прокси после установки CUBRID SHARD 64 128 192 256 320 Vuser
  • 43. CUBRID SHARD Next Балансировка данных Мониторинг шардов Функции агрегации
  • 44. Спасибо! 47 • Сагынов Эсен (NHN Corp.) – @CUBRID – fb.com/cubrid esen@cubrid.org

Notas del editor

  1. To keep this presentation simple, I will focus on three main things.
  2. Ask your questions as I'm going through presentation.Hold off with longer questions to the endDo not hesitate to talk to me during conferenceFollowup by email.
  3. We have researched how other companies manage big data. They still rely on relational databases and manage their data through data sharding. At NHN eventually we do the same.
  4. These are the existing sharding solutions.
  5. - Talking about the open source RDBMS solutions, MySQL doesn’t provide database sharding out of the box.- Google had to significantly change MySQL replication to make it work similarly. But at the time Sun, the former owner of MySQL didn’t accept Google’s changes, resulting in a fork form mainstream without mainstream support.Twitter has recently opened their MySQL fork.http://www.oracle.com/technetwork/database/features/availability/300461-132370.pdf
  6. Spider for MySQL requires to change the storage engine. It’s not an option. We have running service and don’t want to change anything.
  7. Application-aware architecture of dbShards is explained here http://www.dbshards.com/blog/2010/09/black-box-vs-application-aware-sharding/.
  8. NHN has many large services in production. We don’t want any middleware that we need to add to affect the performance. So this was a critical requirement so that the sharding middleware shouldn’t decrease the overall performance of the service.
  9. Spock Proxy and CUBRID SHARD have somewhat similar architecture. Both are lightweight and flexible.
  10. No additional SQL parsing because of HINT.