Pag-abanduna sa ACID sa Pabor ng Base sa Database Engineering

Ang mga pamanggit na mga database ay dinisenyo na may pagiging maaasahan at pare-pareho sa kanilang core. Ang mga inhinyero na bumuo ng mga ito ay nakatutok sa isang transaksyon na modelo na nagsisiguro na ang apat na mga prinsipyo ng ACID modelo ay palaging mapangalagaan. Gayunpaman, ang pagdating ng isang bagong modelo ng unstructured database ay nagiging ACID sa kanyang ulo. Ang modelo ng database ng NoSQL ay nag- eschews ng mataas na nakabalangkas na pamanggit na modelo sa pabor ng isang nababaluktot na key / value store na diskarte. Ang unstructured na diskarte sa data ay nangangailangan ng isang alternatibo sa modelo ng ACID: ang BASE na modelo.

Pangunahing Tenets ng Modelong ACID

May apat na pangunahing tenets ng modelo ng ACID:

Tinitiyak ng atomicity ng mga transaksyon na ang bawat transaksyon ng database ay isang solong yunit na nagpapatupad ng "lahat o wala" na diskarte sa pagpapatupad. Kung nabigo ang anumang pahayag sa transaksyon, ang buong transaksyon ay pinalitan.

Tinitiyak din ng mga pamanggit na mga database ang pagkakapare - pareho ng bawat transaksyon sa mga patakaran sa negosyo ng database. Kung ang anumang elemento ng isang transaksyong atomic ay makagagambala sa pagkakapare-pareho ng database, nabigo ang buong transaksyon.

Ang database engine ay nagpapatupad ng paghihiwalay sa pagitan ng maramihang mga transaksyon na nagaganap sa o malapit sa parehong oras. Ang bawat transaksiyon ay nangyayari bago o pagkatapos ng bawat iba pang transaksyon at ang pagtingin sa database na nakikita ng isang transaksyon sa simula nito ay binago lamang ng transaksyon mismo bago ang pagtatapos nito. Walang transaksyon ang dapat makita ang intermediate na produkto ng ibang transaksyon.

Ang pangwakas na prinsipyo ng ACID, tibay , ay nagsisiguro na sa sandaling ang transaksyon ay nakatuon sa database, permanenteng napanatili ito sa pamamagitan ng paggamit ng mga backup at mga log ng transaksyon. Sa kaganapan ng kabiguan, ang mga mekanismong ito ay maaaring magamit upang ibalik ang mga nakatalagang transaksyon.

Mga Pangunahing Prinsipyo ng BASE

Ang mga database ng NoSQL, sa kabilang banda, ay tumatanggap ng mga sitwasyon kung saan ang overflow ng ACID o, sa katunayan, ay humahadlang sa pagpapatakbo ng database. Sa halip, ang NoSQL ay nakasalalay sa isang malambot na modelo na kilala, naaangkop, bilang modelo ng BASE. Ang modelong ito ay nagtutulak sa kakayahang umangkop na inaalok ng NoSQL at katulad na mga pamamaraang sa pangangasiwa at pag-aaruga ng walang-unstructured na data. Ang BASE ay binubuo ng tatlong mga prinsipyo:

Basic Availability . Ang diskarte sa database ng NoSQL ay nakatuon sa pagkakaroon ng data kahit na sa pagkakaroon ng maramihang mga pagkabigo. Nakakamit ito sa pamamagitan ng paggamit ng isang mataas na ibinahagi diskarte sa pamamahala ng database. Sa halip na mapanatili ang isang solong malalaking tindahan ng data at tumututok sa kasalanan sa pagpapahintulot sa tindahan na iyon, ang mga database ng NoSQL ay kumakalat ng data sa maraming mga sistema ng imbakan na may mataas na antas ng pagtitiklop. Sa hindi inaasahang pangyayari na ang isang kabiguan ay nakakagambala sa pag-access sa isang bahagi ng data, ito ay hindi kinakailangang magreresulta sa isang kumpletong outage ng database.

Soft State . BASE database abandunahin ang mga kinakailangan ng pare-pareho ng ACID modelo halos ganap. Isa sa mga pangunahing konsepto sa likod ng BASE ay ang pagkakapare-pareho ng data ay ang problema ng developer at hindi dapat hawakan ng database.

Pang-araw-araw na Pagkakasunod-sunod . Ang tanging kinakailangan na ang mga database ng NoSQL ay tungkol sa pagkakapare-pareho ay upang mangailangan na sa isang punto sa hinaharap, ang data ay magkasalubong sa isang pare-parehong estado. Gayunman, walang garantiya ang gagawin, kung kailan ito mangyayari. Iyon ay isang kumpletong pag-alis mula sa kagyat na pare-pareho na kinakailangan ng ACID na nagbabawal ng isang transaksyon mula sa pagpapatupad hanggang sa ang naunang transaksyon ay nakumpleto at ang database ay nagtatagpo sa isang pare-parehong estado.

Ang modelo ng BASE ay hindi angkop para sa bawat sitwasyon, ngunit ito ay tiyak na isang nababaluktot na alternatibo sa modelo ng ACID para sa mga database na hindi nangangailangan ng mahigpit na pagsunod sa isang pamanggit na modelo.