Denormalizing your data in MySQL - the right way
-
Upload
veselin-georgiev -
Category
Technology
-
view
170 -
download
1
Transcript of Denormalizing your data in MySQL - the right way
Защо MySQL?
Денормализирането по същество
Нужда от денормализация
Проблеми на денормализацията
Подходи при денормализиране
Materialized views
Добри и лоши практики
Вече не е Community driven
Не е точно Open Source
Принципите са приложими не само за MySQL
Други СУБД имат по добри резултати при релационния модел
Точно заради проблема с натоварването трябва да оптимизираме
Forks, 99% съвместими с MySQL
Огромна популярност
Множество инструменти
Широко разпространение
Оптимизира операциите за четене
Увеличава операциите за писане
Не решава проблема с тежки или сложни заявки
Обема на данните се увеличава
Сложни и скъпи процеси по обновяване да данните
Повишаване на сложността на схемата на базата
Сложни процеси по разработка и поддържане чист модела на базата
Смесване на Нормализирани и денормализирани данни в една таблица
Дублирани или кеш таблици директно в MySQL◦ Използване на Trigger-и за опресняване на данните◦ Периодично опресняване◦ Инвалидиране на кеш при събитие◦ Използване на Shadow таблица при опресняване
Atomic rename (RENAME TABLE foo TO foo_old, foo_new To foo;)
Summary таблици◦ Агрегирани и групирани данни◦ Толеранс към актуалност на данните
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◦ Аналитични инструменти
Materialized views◦ MySQL не ги подържа
◦ Физически съществуващи данни, не виртуални
◦ Данни акумулирани от различни източници, за конкретна цел
◦ Въпросът с актуалността в MySQL е въпрос на разработчика
Flexviews - Materialized views и MySQL
Автоматизирано опресняване на данните Complete
Incremental – (не поддържа всички Select клаузи, union, distinct avg, distinct sum …)
Flex Change Data Capture (FlexCDC) Използва Binary логове, а не таблиците в базата
SQL API Можем да създаваме в runtime view-та