ݺߣ

ݺߣShare a Scribd company logo
Быстрый и простой способ шардирования 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

More Related Content

Быстрый и простой способ шардирования 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

Editor's Notes

  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.