2014. szeptember 13., szombat

In-Memory Column Store

Korábban bemutattam az Oracle Database In-Memory megoldását. Az újdonság az úgynevezett column store. Könnyen összekeverhető lehet az In-Memory Buffer Cache-el, akár funkcionalitásban is hiszen mindkettő az SGA-ban (SGA - írható/olvasható memória terület) "lakik". Tisztázzuk a különbséget. 

Buffer Cache

Az éppen vagy nem régen használt adat blokkok másolatát tárolja itt az Oracle ideiglenesen. Ezzel optimalizálja (csökkenti) a fizikai I/O műveleteket. Ha egy adatot frissítünk (DML update művelet), akkor az adat blokk a buffer cache-ben változik, majd letárolja a metaadatokat a változásról a redo log buffer-be, és csak a COMMIT után írja a redo buffert az online redo log-ba, de még mindig nem írja azonnal a megváltozott adat blokkokat az adatfájlba. Ehelyett, egy database writer (DBW) nevű háttérfolyamat végzi majd el a buffer cache tartalmának kiírását az adatfájlba, a háttérben, szépen, lassan (lazy write). 
Ha egy kért adat nem található a buffer-ben, akkor fizikai I/O művelet hajtódik végre, ellenkező esetben viszont csak logikai I/O, más néven, buffer I/O, ami jóval gyorsabb. Erről többet, akit érdekel, itt olvashat.



Column Store

Oracle Database 12c R1-ben debütált feature. Szintén az SGA-ban van, táblák és/vagy partíciók másolatát tárolja egy speciális, column formátumban. A row format és column format-ról már írtam az előző cikkben. Oszlop-alapú tárolási mód, kifejezetten analitikus műveletek hatékony végrehajtására. Tehát sorok helyett oszlopok vannak. Ez a tárolási forma csak a memóriában létezik. 

Pár tulajdonsága
  • Minden létező adatbázis funkciót támogat (beleértve a HA funkciókat is)
  • Nem kell semmit sem változtatni a "felette" lévő alkalmazáson
  • Egyszerű bekonfigurálni. Be kell állítani az INMEMORY_SIZE inicializáló paramétert, majd be kell állítani táblán vagy partíción az INMEMORY tulajdonságot
  • Kevesebb index (analitikus lekérdezésekhez nem fog kelleni)
  • Szükség lesz materializált nézetekre és OLAP kockákra

Dual Memory Formats

Fontos kulcsszó! Lényegében nem számít, hogy milyen a lekérdezés, gond nélkül le lesz kezelve. Mindegy, hogy IM column store-ból vagy a buffer cache-ből, vagy mindkettőből kell lekérdezni az adatokat. Gyors és megbízható lesz. És tud tömöríteni is!

Tranzakció folyamata

Egy soros adat változtatás (DML művelet) a Database In-Memory bekapcsolt állapota mellett is a buffer cache-ben történik. Ha az adat, amin a művelet végrehajtódik az IM column store-ban van, akkor a változás ott is látszik. A buffer cache és a column store közti konzisztenciát az In-Memory Transaction Manager felügyeli.

Egy kis történelem

1969-ben a TAXIR volt az első oszlop-szervezett adatbázis alkalmazás, ami az adatok előkeresésére fókuszált. Ez a Ford Mustangnak is a legjobb éve  volt:) Az első kereskedelmi forgalomban is megjelent oszlop-szervezett adatbázis kezelő a KDB volt, amit aztán követett a Sybase IQ.
Tehát nem új találmány. Vajon miért lehet, hogy 2014-ben az Oracle a 12c-ben jelenti be ezt a fícsört?!




Nincsenek megjegyzések:

Megjegyzés küldése