Kovanica Not-Only-SQL, ili NoSQL, je, pored WebScale, jedna od najčešćih novo-kovanica kada se ovih dana priča o novim tehnologijama na internetu. Trend novih sistema za upravljanje bazama podataka, suštinski ne-relacionih, ili bar ne samo relacionih sistema, postao je možda i previše glasan, a u svakom slučaju izuzetno popularan. Ovo ide dotle da neki zagovornici čak predlažu potpuni prelazak na ovakve, nove sisteme i napuštanje klasične relacione paradigme projektovanja baza podataka.
Ovi koncepti i njihova primena predstavljali su inspiraciju za moj prethodni tekst. Iako se suštinski ne slažem sa onima koji misle da je ovaj pristup jedini pravi, mislim da u dobro projektovanom sistemu i te kako ima mesta za dodatne ne-relacione načine sakupljanja podataka. Već smo pisali o tome da Limundo IT za pretragu koristi Sphinx, koji je, sam po sebi, dodatni sloj keširanja podataka ka bazi podataka. Negde u decembru smo krenuli u planiranje i analizu još jednog sistema, sve sa ciljem rasterećivanja relacione baze i dodatnog ubrzavanja rada sajta.
Konkretan povod je bilo naše uvodjenje TokuMX sistema, prvo u test, a zatim, krajem decembra i u produkciju. Sam TokuMX osim fraktalnog indeksiranja, donosi skoro potpunu kompatibilnost sa izuzetno popularnom MongoDB NoSQL bazom, ali uz dodatne slojeve i dorade koji bazi daju ACID compliance, i čine ovu bazu mnogo pouzdanijom za rad! Ova kombinacija izuzetne brzine, pouzdanosti i naprednih tehnologija nas je navela da razmislimo….
Prva ideja je bila analiza naše postojeće baze. Ispostavilo se da je najveće opterećenje, u pogledu UPDATE-a na bazom, bio brojač pregleda predmeta i aukcija. Naizgled beningan podatak, spojen sa visokom posetom, je, kao što je analiza binlogova pokazala, bio odgovoran za skoro 90% UPDATE izjava.
Sam setup je bio zadivljujuće jednostavan. Da bi obezbedili pouzdanost podigli smo tri nova servera, i napravili od njih Replica Set. Mongo i Toku replika setovi bez problema mogu da izdrže pad jedne mašine iz seta, plus njen povratak ide lako i bez velikog uticaja na performanse. Dodatno, PHP drajver za Mongo obezbeđuje potpuno transparentan rad sa replika setom, gde programer samo treba da otvori konekciju na set i kaže da li je zadovoljan čitanjem sa sekundarnog noda, ili su mu potrebni podaci sa primarnog. Za razliku od MySQL-a, gde se brojač pregleda morao čitati, lokovati i onda upisivati Mongo nudi komandu Increment, što je omogućilo da se broj poseta uvećava asinhrono, dodatno rasterećujući sistem i ubrzavajući učitavanje strane!
Voleo bih da više pričam o rezultatima – ali ovog puta su bili jako jednostavni. Bez mnogo muke, bez priče, sve jednostavno radi. Zato, za kraj, samo preporuka da probate i sami i ilustracija kako to radi kod nas: