Mik az ACID-garanciák az Azure Databricksben?

Az Azure Databricks alapértelmezés szerint a Delta Lake-t használja az összes olvasáshoz és íráshoz, és a nyílt forráskód Delta Lake protokoll által biztosított ACID-garanciákra épül. Az ACID az atomitást, a konzisztenciát, az elkülönítést és a tartósságot jelenti.

  • Az atomiság azt jelenti, hogy az összes tranzakció sikeres vagy sikertelen.
  • A konzisztenciagaranciák az adatok adott állapotának egyidejű műveletek általi megfigyelésével kapcsolatosak.
  • Az elkülönítés azt jelenti, hogy az egyidejű műveletek hogyan ütköznek egymással.
  • A tartósság azt jelenti, hogy a véglegesített módosítások véglegesek.

Bár számos adatfeldolgozási és raktározási technológia írja le az ACID-tranzakciókat, az egyes garanciák rendszerenként eltérőek, és az Azure Databricksen végzett tranzakciók eltérhetnek a többi, ön által kezelt rendszertől.

Feljegyzés

Ez a lap a Delta Lake által támogatott táblákra vonatkozó garanciákat ismerteti. Előfordulhat, hogy más adatformátumok és integrált rendszerek nem biztosítanak tranzakciós garanciát az olvasásokhoz és írásokhoz.

Minden Azure Databricks a felhőobjektum-tárolóba ír tranzakciós véglegesítéseket használ, amelyek metaadatfájlokat hoznak létre az adatfájlokkal _started_<id> kezdve és _committed_<id> mellett. Ezeket a fájlokat nem kell használnia, mivel az Azure Databricks rendszeresen megtisztítja az elavult véglegesítési metaadatfájlokat.

Hogyan terjednek ki a tranzakciók az Azure Databricksben?

Az Azure Databricks táblaszinten kezeli a tranzakciókat. A tranzakciók mindig egyszerre egy táblára vonatkoznak. Az egyidejű tranzakciók kezeléséhez az Azure Databricks optimista egyidejűségi vezérlést használ. Ez azt jelenti, hogy nincs zárolva az olvasás vagy írás egy táblázat, és holtpont nem lehetőség.

Az Azure Databricks alapértelmezés szerint pillanatkép-elkülönítést biztosít az írások olvasási és írási szerializálható elkülönítésekor . Az írásszerializálható elkülönítés erősebb garanciákat biztosít, mint a pillanatképek elkülönítése, de csak az írások esetében alkalmazza az erősebb elkülönítést.

A több táblára hivatkozó olvasási műveletek az egyes táblák aktuális verzióját adja vissza a hozzáférés időpontjában, de ne szakítsa meg az egyidejű tranzakciókat, amelyek módosíthatják a hivatkozott táblákat.

Az Azure Databricks nem rendelkezik BEGIN/END olyan szerkezetekkel, amelyek lehetővé teszik több művelet egyetlen tranzakcióként való csoportosítását. A több táblát módosító alkalmazások sorozatos módon véglegesítik az egyes táblák tranzakcióit. A táblázat beszúrásait, frissítéseit és törlését egyetlen írási tranzakcióba kombinálhatja a használatával MERGE INTO.

Hogyan valósítja meg az Azure Databricks az atomitást?

A tranzakciónapló-vezérlők véglegesítik az atomitást. A tranzakció során az adatfájlok a táblát tartalmazó fájlkönyvtárba lesznek írva. Amikor a tranzakció befejeződik, egy új bejegyzés lesz véglegesített a tranzakciónaplóban, amely tartalmazza a tranzakció során írt összes fájl elérési útját. Minden véglegesítés növeli a tábla verzióját, és láthatóvá teszi az új adatfájlokat az olvasási műveletek számára. A tábla aktuális állapota a tranzakciónaplókban érvényesként megjelölt összes adatfájlt tartalmazza.

Az adatfájlok csak akkor lesznek nyomon követve, ha a tranzakciónapló nem rögzíti az új verziót. Ha egy tranzakció meghiúsul, miután adatfájlokat írt egy táblába, ezek az adatfájlok nem fogják megrongálni a tábla állapotát, de a fájlok nem lesznek a tábla részei. A VACUUM művelet törli a táblakönyvtárban lévő összes nem követett adatfájlt, beleértve a sikertelen tranzakciókból származó fennmaradó nem véglegesített fájlokat is.

Hogyan valósítja meg az Azure Databricks a tartósságot?

Az Azure Databricks felhőalapú objektumtároló használatával tárolja az összes adatfájlt és tranzakciónaplót. A felhőalapú objektumtárolás magas rendelkezésre állással és tartósságmal rendelkezik. Mivel a tranzakciók sikeresek vagy teljesen sikertelenek, és a tranzakciónapló a felhőobjektum-tárolóban lévő adatfájlok mellett él, az Azure Databricks táblái öröklik annak a felhőobjektum-tárolónak a tartóssági garanciáit, amelyeken tárolják őket.

Hogyan valósítja meg az Azure Databricks a konzisztenciát?

A Delta Lake optimista egyidejűségi vezérlést használ az írások közötti tranzakciós garanciák biztosítására. Ebben a mechanizmusban az írások három szakaszban működnek:

  1. Olvasás: Felolvassa (ha szükséges) a tábla legújabb elérhető verzióját, hogy megállapítsa, mely fájlokat kell módosítani (azaz át kell írni).
    • A csak hozzáfűző írások írás előtt nem olvassák be a táblázat aktuális állapotát. A sémaérvényesítés a tranzakciónapló metaadatait használja ki.
  2. Írás: Adatfájlokat ír a tábla definiálásához használt könyvtárba.
  3. Ellenőrzés és véglegesítés:
    • Ellenőrzi, hogy a javasolt módosítások ütköznek-e az olvasott pillanatkép óta egyidejűleg véglegesített egyéb módosításokkal.
    • Ha nincsenek ütközések, az összes szakaszos módosítás új verziójú pillanatképként lesz véglegesítve, és az írási művelet sikeres lesz.
    • Ütközések esetén az írási művelet egyidejű módosítási kivétellel meghiúsul. Ez a hiba megakadályozza az adatok sérülését.

Az optimista egyidejűség feltételezi, hogy az adatokon lévő egyidejű tranzakciók többsége nem ütközhet egymással, de ütközések léphetnek fel. Lásd: Elkülönítési szintek és írási ütközések az Azure Databricksben.

Hogyan valósítja meg az Azure Databricks az elkülönítést?

Az Azure Databricks alapértelmezés szerint írható szerializálható elkülönítést használ az összes táblaíráshoz és -frissítéshez. A pillanatkép-elkülönítés minden táblaolvasáshoz használható.

Az írási szerializálhatóság és az optimista egyidejűség-vezérlés együttesen biztosítja az írások magas átviteli sebességét. A táblák aktuális érvényes állapota mindig elérhető, és bármikor elindítható az írás egy táblán. Az egyidejű olvasásokat csak a metaadattár és a felhőerőforrások átviteli sebessége korlátozza.

Lásd: Elkülönítési szintek és írási ütközések az Azure Databricksben.

Támogatja a Delta Lake a többtáblás tranzakciókat?

A Delta Lake nem támogatja a többtáblás tranzakciókat. A Delta Lake a tábla szintjén támogatja a tranzakciókat.

Az Azure Databricks elsődleges kulcs- és idegenkulcs-kapcsolatai tájékoztató jellegűek, és nem kényszeríthetők ki. Lásd: Elsődleges kulcs- és idegenkulcs-kapcsolatok deklarálása.

Mit jelent, hogy a Delta Lake támogatja a többfürt-írást?

A Delta Lake megakadályozza az adatok sérülését, ha egyszerre több fürt is ugyanarra a táblára ír. Egyes írási műveletek ütközhetnek az egyidejű végrehajtás során, de ne rontsa meg a táblát. Lásd: Elkülönítési szintek és írási ütközések az Azure Databricksben.

Módosíthatom a különböző munkaterületekről származó Delta-táblákat?

Igen, egyszerre módosíthatja ugyanazt a Delta-táblát különböző munkaterületekről. Továbbá, ha egy folyamat egy munkaterületről ír, a többi munkaterület olvasói egységes nézetet fognak látni.