Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Veselin Georgiev, PhD
@petrovkata
 Защо MySQL?
 Денормализирането по същество
 Нужда от денормализация
 Проблеми на денормализацията
 Подходи при денор...
 Вече не е Community driven
 Не е точно Open Source
 Принципите са приложими не само за
MySQL
 Други СУБД имат по добр...
 Точно заради проблема с натоварването
трябва да оптимизираме
 Forks, 99% съвместими с MySQL
 Огромна популярност
 Мно...
 № 1 в уеб и № 2 въобще
 Изчислени стойности
 Невъзпроизводими изчисления
 Join Jungles
 Натоварване / Скалиране
 Оптимизира операциите за четене
 Увеличава операциите за писане
 Не решава проблема с тежки или сложни заявки
 Не решава проблема с множество операции
по писане
 Разлика между OLTP / OLAP
 Обема на данните се увеличава
 Сложни и скъпи процеси по обновяване да
данните
 Повишаване на сложността на схемата на...
 Смесване на Нормализирани и
денормализирани данни в една таблица
 Дублирани или кеш таблици директно в MySQL
◦ Използва...
 Counter tables
◦ Съдържат сумарни данни
◦ Проблем с конкуренция/глобален mutex
 UPDATE hit_counter SET cnt = cnt + 1
 ...
 Materialized views
◦ MySQL не ги подържа
◦ Физически съществуващи данни, не виртуални
◦ Данни акумулирани от различни из...
 Flexviews - Materialized views и MySQL
 Автоматизирано опресняване на данните
 Complete
 Incremental – (не поддържа в...
 Naming conventions
 Запазване на връзки (foreign keys)
 Мета данни
 Документиране
Въпроси?
Denormalizing your data in MySQL -  the right way
Denormalizing your data in MySQL -  the right way
Denormalizing your data in MySQL -  the right way
Upcoming SlideShare
Loading in …5
×

Denormalizing your data in MySQL - the right way

647 views

Published on

Basic practices in denormalizing your database when needed, some good and bad practices (in Bulgarian)

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Denormalizing your data in MySQL - the right way

  1. 1. Veselin Georgiev, PhD @petrovkata
  2. 2.  Защо MySQL?  Денормализирането по същество  Нужда от денормализация  Проблеми на денормализацията  Подходи при денормализиране  Materialized views  Добри и лоши практики
  3. 3.  Вече не е Community driven  Не е точно Open Source  Принципите са приложими не само за MySQL  Други СУБД имат по добри резултати при релационния модел
  4. 4.  Точно заради проблема с натоварването трябва да оптимизираме  Forks, 99% съвместими с MySQL  Огромна популярност  Множество инструменти  Широко разпространение
  5. 5.  № 1 в уеб и № 2 въобще
  6. 6.  Изчислени стойности  Невъзпроизводими изчисления  Join Jungles  Натоварване / Скалиране
  7. 7.  Оптимизира операциите за четене  Увеличава операциите за писане  Не решава проблема с тежки или сложни заявки
  8. 8.  Не решава проблема с множество операции по писане
  9. 9.  Разлика между OLTP / OLAP
  10. 10.  Обема на данните се увеличава  Сложни и скъпи процеси по обновяване да данните  Повишаване на сложността на схемата на базата  Сложни процеси по разработка и поддържане чист модела на базата
  11. 11.  Смесване на Нормализирани и денормализирани данни в една таблица  Дублирани или кеш таблици директно в MySQL ◦ Използване на Trigger-и за опресняване на данните ◦ Периодично опресняване ◦ Инвалидиране на кеш при събитие ◦ Използване на Shadow таблица при опресняване  Atomic rename (RENAME TABLE foo TO foo_old, foo_new To foo;)  Summary таблици ◦ Агрегирани и групирани данни ◦ Толеранс към актуалност на данните
  12. 12.  Counter tables ◦ Съдържат сумарни данни ◦ Проблем с конкуренция/глобален mutex  UPDATE hit_counter SET cnt = cnt + 1  UPDATE hit_counter SET cnt = cnt + 1 WHERE slot = RAND() * 100;  Периодично увеличаване  Кеш/дублиране на данни извън MySQL ◦ Memcached ◦ NoSQL ◦ BIS ◦ Data warehouses ◦ Аналитични инструменти
  13. 13.  Materialized views ◦ MySQL не ги подържа ◦ Физически съществуващи данни, не виртуални ◦ Данни акумулирани от различни източници, за конкретна цел ◦ Въпросът с актуалността в MySQL е въпрос на разработчика
  14. 14.  Flexviews - Materialized views и MySQL  Автоматизирано опресняване на данните  Complete  Incremental – (не поддържа всички Select клаузи, union, distinct avg, distinct sum …)  Flex Change Data Capture (FlexCDC)  Използва Binary логове, а не таблиците в базата  SQL API  Можем да създаваме в runtime view-та
  15. 15.  Naming conventions  Запазване на връзки (foreign keys)  Мета данни  Документиране
  16. 16. Въпроси?

×