Presentation abstract:
Memcached and MySQL probably needs no introduction to anyone. They are working great standalone but together they can solve most of the performance issues related to the database layer. It should be noted that both projects complement each other perfectly well in other situations, far from typical caching of data.
In the first part of the presentation we will see HandlerSocket which introduces simplified and directe access to database table's storage engine, which can greatly improve performance of primary key seeks even up to several hundred thousand reads per second. HandlerSocket inspired the memcached API introduced in MySQL 5.6, that we will dicuss a bit more.
The second part will be focused on using MySQL to transfer data between memcached clusters in different locations. When scaling applications with different server room locations there is often a need to place in each of them local, consistent copy of data cache to provide fast and easy access to key data. On the example of Facebook architecture we will look at the problems of fault resistant method to solve this problem, which in addition can also be used in smaller projects, such as session data redundancy.
Abstrakt prezentacji:
Memcached i MySQL to rozwiązania, których chyba nie trzeba przedstawiać nikomu. Idealnie działają solo, a w typowym połączeniu potrafią skutecznie rozwiązać większość problemów wydajnościowych związanych z warstwą bazy danych. Warto jednak zwrócić uwagę, iż oba projekty świetnie uzupełniają się także w innych zastosowaniach, dalekich od typowego cache’owania danych.
W pierwszej części prezentacji poznamy m.in. rozwiązanie HandlerSocket, które wprowadza do bazy danych MySQL uproszczony i bezpośredni dostęp do storage-engine’u tabeli, co w konsekwencji pozwala osiągnąć ilość odczytów względem klucza głównego na poziomie kilkuset tysięcy operacji na sekundę. HandlerSocket stał się pierwowzorem wprowadzonego w MySQL 5.6 memcached API, którego możliwościom poświęcimy znacznie więcej uwagi.
Druga część skoncentrowana będzie na wykorzystaniu MySQL do przenoszenia danych pomiędzy klastrami memcached zlokalizowanych w odległych centrach danych.W przypadku skalowania aplikacji na poziomie osobnych serwerowni często zachodzi potrzeba umieszczenia w każdej z nich lokalnych, spójnych kopii danych cache, aby zapewnić szybki i łatwy dostęp do kluczowych danych. Na przykładzie zastosowanej przez Facebook architektury zapoznamy się pełni odporną na problemy metodą rozwiązania tego problemu, którą dodatkowo można zastosować także w mniejszych projektach, np. do redundancji danych sesyjnych.