Ang mga relational database ay idinisenyo nang may pagiging maaasahan at pare-pareho sa kanilang pangunahing bahagi. Ang mga inhinyero na bumuo ng mga ito ay nakatuon sa isang transactional na modelo na nagsisiguro na ang apat na prinsipyo ng modelo ng ACID ay palaging mapangalagaan. Gayunpaman, ang pagdating ng isang bagong unstructured database model ay nagiging ACID sa ulo nito. Iniiwasan ng modelo ng database ng NoSQL ang mataas na istrukturang modelo ng relational na pabor sa isang flexible na diskarte sa key/value store. Ang hindi nakabalangkas na diskarte sa data na ito ay nangangailangan ng alternatibo sa ACID model: ang BASE model.
Mga Pangunahing Panuntunan ng ACID Model
May apat na pangunahing prinsipyo ng ACID model:
- Ang atomicity ng mga transaksyon ay tumitiyak na ang bawat transaksyon sa database ay isang yunit na gumagamit ng "lahat o wala" na diskarte sa pagpapatupad. Kung nabigo ang anumang statement sa transaksyon, ibabalik ang buong transaksyon.
- Ang mga relational database ay tinitiyak din ang consistency ng bawat transaksyon sa mga panuntunan sa negosyo ng database. Kung ang anumang elemento ng isang atomic na transaksyon ay makagambala sa pagkakapare-pareho ng database, ang buong transaksyon ay mabibigo.
- Ang database engine ay nagpapatupad ng isolation sa pagitan ng maraming transaksyon na nagaganap sa o malapit sa parehong oras. Ang bawat transaksyon ay nangyayari bago o pagkatapos ng bawat iba pang transaksyon, at ang view ng database na nakikita ng isang transaksyon sa simula nito ay binago lamang ng mismong transaksyon bago ang pagtatapos nito. Walang transaksyon ang dapat na makakita ng intermediate na produkto ng isa pang transaksyon.
- Ang pangwakas na prinsipyo ng ACID, durability, ay nagsisiguro na kapag ang isang transaksyon ay ginawa sa database, ito ay permanenteng mapangalagaan sa pamamagitan ng paggamit ng mga backup at mga log ng transaksyon. Kung sakaling mabigo, maaaring gamitin ang mga mekanismong ito para i-restore ang mga ginawang transaksyon.
Mga Pangunahing Prinsipyo ng BASE
Ang mga NoSQL database, sa kabilang banda, ay tinatanggap ang mga sitwasyon kung saan ang modelo ng ACID ay sobra-sobra o, sa katunayan, hahadlang sa pagpapatakbo ng database. Sa halip, umaasa ang NoSQL sa isang mas malambot na modelo na kilala, naaangkop, bilang modelo ng BASE. Ang modelong ito ay tinatanggap ang flexibility na inaalok ng NoSQL at mga katulad na diskarte sa pamamahala at pag-curate ng hindi nakaayos na data. Ang BASE ay binubuo ng tatlong prinsipyo:
- Basic Availability Nakatuon ang diskarte sa database ng NoSQL sa pagkakaroon ng data kahit na mayroong maraming pagkabigo. Nakakamit ito sa pamamagitan ng paggamit ng isang mataas na ipinamamahagi na diskarte sa pamamahala ng database. Sa halip na mapanatili ang isang malaking data store at tumuon sa fault tolerance ng store na iyon, ang mga database ng NoSQL ay nagkakalat ng data sa maraming storage system na may mataas na antas ng replikasyon. Sa hindi malamang na kaganapan na ang isang pagkabigo ay nakakagambala sa pag-access sa isang segment ng data, hindi ito kinakailangang magresulta sa isang kumpletong pagkawala ng database.
- Soft State. Ang mga database ng BASE ay halos ganap na inabandona ang mga kinakailangan sa pagkakapare-pareho ng modelo ng ACID. Ang isa sa mga pangunahing konsepto sa likod ng BASE ay ang pagkakapare-pareho ng data ay ang problema ng developer at hindi dapat pangasiwaan ng database.
- Eventual Consistency Ang tanging kinakailangan na mayroon ang mga database ng NoSQL hinggil sa pagkakapare-pareho ay ang hilingin na sa isang punto sa hinaharap, ang data ay magsasama-sama sa isang pare-parehong estado. Walang mga garantiyang ginawa, gayunpaman, tungkol sa kung kailan ito mangyayari. Iyon ay isang kumpletong pag-alis mula sa agarang pagkakapare-pareho na kinakailangan ng ACID na nagbabawal sa isang transaksyon na maisagawa hanggang sa makumpleto ang naunang transaksyon at ang database ay mag-converge sa isang pare-parehong estado.
Sa BASE, ang pangunahing availability ay maaaring mangahulugan na hindi mo man lang kontrolin ang mga datasource. Halimbawa, maaari kang mag-link sa mga pampublikong dataset para sa bahagi ng iyong pagsisikap.
Mga Kaugnay na Kaso ng Paggamit
Ang modelo ng BASE ay hindi angkop para sa bawat sitwasyon, ngunit ito ay tiyak na isang flexible na alternatibo sa modelo ng ACID para sa mga database na hindi nangangailangan ng mahigpit na pagsunod sa isang relational na modelo.
Ang pinakamainam na kaso ng paggamit para sa mga database na gumagamit ng ACID ay nakadepende sa mataas na structured na data na may mga predictable na input at output. Kaya, nakikinabang ang mga database ng human-resource, retail database at electronic medical record mula sa matatag na internal consistency checking na inaalok ng ACID.
Gayunpaman, ang mga solusyon sa BASE ay mas mahusay para sa malabo na paksa tulad ng pagsusuri ng damdamin. Halimbawa, ang isang BASE-structured na proyekto ay maaaring mag-scan ng isang Twitter feed na naghahanap ng mga salita na nagpapahiwatig ng damdamin batay sa isang partikular na hashtag. Ang Twitter feed ay hindi maayos ang pagkakabalangkas o lokal na na-instantiate, ngunit ang data stream ay nag-aalok ng impormasyong naka-program sa mga query kahit na ang saklaw at katangian ng data na iyon ay hindi malinis na hangganan.