1.1 Paano gumagana ang isang database ng NoSQL

Gumagamit ang mga database ng NoSQL ng iba't ibang modelo ng data upang ma-access at manipulahin ang data. Ang mga uri ng database ay na-optimize para sa data-intensive na application na nangangailangan ng mababang latency at flexible na mga modelo ng data. Ang lahat ng ito ay nakakamit sa pamamagitan ng paglambot sa mahigpit na mga kinakailangan sa pagkakapare-pareho ng data na karaniwan para sa iba pang mga uri ng mga database.

Isaalang-alang ang isang halimbawa ng pagmomodelo ng schema para sa isang simpleng database ng mga aklat.

  • Sa isang relational database, ang isang entry ng libro ay madalas na nahahati sa maraming bahagi (o "na-normalize") at naka-imbak sa magkahiwalay na mga talahanayan na ang mga relasyon ay tinukoy ng pangunahin at dayuhang mga hadlang sa key. Sa halimbawang ito, ang talahanayan ng Mga Aklat ay may mga column na ISBN , Pamagat ng Aklat, at "ISBN"atna "May-akda"ang talahanayan ng May-akda-ISBN, atPangalan ng May-akdaatng Author IDmga columnng Mga May-akdatalahanayanng EdisyonNumero. Ang relational na modelo ay idinisenyo upang mapanatili ang referential integridad sa pagitan ng mga talahanayan sa isang database. Ang data ay na-normalize upang mabawasan ang redundancy at sa pangkalahatan ay na-optimize para sa storage.

  • Sa isang database ng NoSQL, karaniwang iniimbak ang isang talaan ng aklat bilang isang dokumento ng JSON. Para sa bawat aklat, o elemento, ang ISBN , Pamagat ng Aklat , Numero ng Edisyon , Pangalan ng May-akda, at ID ng May-akda ay iniimbak bilang mga katangian sa isang dokumento. Sa modelong ito, ang data ay na-optimize para sa intuitive na pag-unlad at pahalang na scalability.

1.2 Saan magagamit ang mga database ng NoSQL?

Ang mga database ng NoSQL ay angkop para sa maraming modernong application, tulad ng mobile, gaming, mga web application, na nangangailangan ng flexible, scalable database na may mataas na pagganap at mayamang functionality na maaaring magbigay ng maximum na kakayahang magamit.

  • Kakayahang umangkop . Karaniwan, ang mga database ng NoSQL ay nag-aalok ng mga flexible na schema, na nagbibigay-daan para sa mas mabilis na pag-unlad at pagpapagana ng incremental na pagpapatupad. Dahil sa paggamit ng mga flexible na modelo ng data, ang mga database ng NoSQL ay angkop para sa semi-structured at unstructured na data.

  • Scalability . Ang mga database ng NoSQL ay idinisenyo upang sukatin gamit ang mga distributed na cluster ng hardware, hindi sa pamamagitan ng pagdaragdag ng mahal, maaasahang mga server. Ang ilang mga cloud service provider ay nagpapatakbo ng mga operasyong ito sa background, na nagbibigay ng ganap na pinamamahalaang serbisyo.

  • Mataas na pagganap . Ang mga database ng NoSQL ay na-optimize para sa mga partikular na modelo ng data at mga pattern ng pag-access upang makamit ang mas mataas na pagganap kaysa sa mga relational na database.

  • Malawak na pag-andar . Ang mga database ng NoSQL ay nagbibigay ng mga rich API at mga uri ng data na partikular na idinisenyo para sa kani-kanilang mga modelo ng data.

1.3 Mga uri ng mga database ng NoSQL

Ang mga database ng NoSQL ay ginagamit kung saan hindi masyadong maginhawang mag-imbak ng data sa anyo ng mga talahanayan. Samakatuwid, ang mga ito ay naka-imbak sa iba't ibang mga format. Karaniwan, mayroong 6 na pangunahing uri ng data ng mga database ng NoSQL.

DB batay sa mga pares ng key-value

Ang mga database na gumagamit ng mga key-value pairs ay sumusuporta sa mataas na separability at nagbibigay ng hindi pa nagagawang horizontal scaling na hindi makakamit sa iba pang mga uri ng database. Ang mga mahusay na kaso ng paggamit para sa mga database ng key-value ay gaming, advertising, at IoT application.

Halimbawa, tinitiyak ng Amazon DynamoDB ang matatag na operasyon ng database na may pagkaantala na hindi hihigit sa ilang millisecond sa anumang sukat. Ang matatag na pagganap na ito ay ang pangunahing dahilan para sa paglipat ng Mga Kwento ng Snapchat sa DynamoDB, dahil ang tampok na Snapchat na ito ay nauugnay sa pinakamalaking pag-load ng pagsulat ng storage.

Dokumento

Sa application code, ang data ay madalas na kinakatawan bilang isang bagay o dokumento sa isang format na tulad ng JSON dahil ito ay isang mahusay at madaling gamitin na modelo ng data para sa mga developer. Nagbibigay-daan ang mga database ng dokumento sa mga developer na mag-imbak at mag-query ng data sa isang database gamit ang parehong modelo ng dokumento na ginagamit nila sa kanilang application code. Ang flexible, semi-structured, hierarchical na katangian ng mga dokumento at mga database ng dokumento ay nagpapahintulot sa kanila na mag-evolve sa mga pangangailangan ng application.

Gumagana nang maayos ang modelo ng dokumento sa mga katalogo, profile ng user, at mga sistema ng pamamahala ng nilalaman kung saan ang bawat dokumento ay natatangi at nagbabago sa paglipas ng panahon. Ang Amazon DocumentDB (tugma sa MongoDB) at MongoDB ay karaniwang mga database ng dokumento na nagbibigay ng mga functional at intuitive na API para sa maliksi na pag-unlad.

Mga database ng graph

Pinapadali ng mga database ng graph ang pagbuo at pagpapatakbo ng mga application na gumagana sa mga hanay ng kumplikadong data. Ang mga karaniwang halimbawa ng paggamit ng mga database ng graph ay mga social network, mga serbisyo ng rekomendasyon, mga sistema ng pagtuklas ng pandaraya, at mga graph ng kaalaman. Ang Amazon Neptune ay isang ganap na pinamamahalaang serbisyo ng database ng graph. Sinusuportahan ng Neptune ang Property Graph at Resource Description Framework (RDF), na nagbibigay ng dalawang graph API na mapagpipilian: TinkerPop at RDF/SPARQL. Kasama sa mga karaniwang database ng graph ang Neo4j at Giraph.

DB sa memorya

Kadalasan ang mga application ng gaming at advertising ay gumagamit ng mga leaderboard, storage ng session, at real-time na analytics. Ang ganitong mga kakayahan ay nangangailangan ng tugon sa loob ng ilang microsecond, habang ang isang matalim na pagtaas sa trapiko ay posible anumang oras.

Ang Amazon MemoryDB para sa Redis ay isang Redis-compatible, maaasahang in-memory database service na nagpapababa ng read latency sa millisecond at nagbibigay ng tibay sa maraming availability zone. Ang MemoryDB ay binuo para sa napakataas na pagganap at pagiging maaasahan, kaya maaari itong magamit bilang pangunahing database para sa modernong microservice-based na mga application.

Ang Amazon ElastiCache ay isang ganap na pinamamahalaang Redis at Memcached na katugmang in-memory na caching na serbisyo upang maghatid ng mababang latency, mataas na throughput na mga workload. Ang mga kliyenteng tulad ng Tinder na nangangailangan ng kanilang mga app na tumugon sa real time ay gumagamit ng in-memory sa halip na mga disk storage system. Ang isa pang halimbawa ng isang bodega ng data na ginawa para sa layunin ay ang Amazon DynamoDB Accelerator (DAX). Binibigyang-daan ng DAX ang DynamoDB na magbasa ng data nang ilang beses nang mas mabilis.

Maghanap ng mga database

Maraming mga application ang bumubuo ng mga log upang gawing mas madali para sa mga developer na i-troubleshoot at ayusin ang mga problema. Ang Amazon OpenSearch ay isang serbisyong ginawa para sa halos real-time na visualization at analytics ng mga awtomatikong nabuong stream ng data sa pamamagitan ng pag-index, pagsasama-sama at paghahanap ng mga semi-structured na log at sukatan.

Bilang karagdagan, ang Amazon OpenSearch ay isang makapangyarihan, mataas na pagganap na full-text na serbisyo sa paghahanap. Ginagamit ng Expedia ang mahigit 150 domain ng serbisyo ng Amazon OpenSearch, 30 TB ng data, at 30 bilyong dokumento para sa iba't ibang kaso ng paggamit na kritikal sa misyon, mula sa pagsubaybay sa pagpapatakbo at pag-troubleshoot hanggang sa distributed na application stack tracking at pag-optimize ng gastos.

1.4 Paghahambing ng SQL (relational) at NoSQL (non-relational) na mga database

Ang NoSQL ay may maraming mga pakinabang, kaya dapat mong malaman kahit na sa teorya na ang tool na kailangan mo ay umiiral na bago ito isulat sa iyong sarili. Sa ibaba ay magbibigay ako ng paghahambing ng NoSQL at SQL database:

Angkop na mga workload

Ang mga relational database ay idinisenyo para sa mga transactional at lubos na pare-pareho ang real-time transaction processing (OLTP) na mga application at ito ay angkop para sa real-time analytical processing (OLAP).

Ang mga database ng NoSQL ay idinisenyo upang gumana sa isang hanay ng mga pattern ng pag-access ng data, kabilang ang mga application na mababa ang latency. Ang mga database ng paghahanap ng NoSQL ay idinisenyo para sa analytics ng semi-structured na data.

Modelo ng Data

Ang relational na modelo ay nag-normalize ng data at ginagawa itong mga talahanayan na binubuo ng mga row at column. Ang isang schema ay mahigpit na tumutukoy sa mga talahanayan, mga hilera, mga haligi, mga index, mga relasyon sa pagitan ng mga talahanayan, at iba pang mga elemento ng database. Tinitiyak ng naturang database ang integridad ng reference data sa mga relasyon sa pagitan ng mga talahanayan.

Ang mga database ng NoSQL ay nagbibigay ng iba't ibang mga modelo ng data tulad ng mga pares ng key-value, mga dokumento, at mga graph na na-optimize para sa mataas na pagganap at scalability.

Mga Katangian ng ACID

Ang mga relational database ay nagbibigay ng isang set ng mga katangian ng ACID: atomicity, consistency, isolation, reliability.

  • Ang Atomicity ay nangangailangan na ang isang transaksyon ay isakatuparan nang buo o hindi man.
  • Ang pagkakapare-pareho ay nangangahulugan na sa sandaling makumpleto ang isang transaksyon, ang data ay dapat sumunod sa schema ng database.
  • Ang paghihiwalay ay nangangailangan na ang mga parallel na transaksyon ay tumakbo nang hiwalay sa isa't isa.
  • Ang pagiging maaasahan ay tumutukoy sa kakayahang makabawi sa huling na-save na estado pagkatapos ng hindi inaasahang pagkabigo ng system o pagkawala ng kuryente.

Ang mga database ng NoSQL ay madalas na nag-aalok ng isang kompromiso, na nagpapaluwag sa mahigpit na mga kinakailangan ng mga katangian ng ACID sa pabor ng isang mas nababaluktot na modelo ng data na nagbibigay-daan para sa pahalang na pag-scale. Ginagawa nitong mahusay na pagpipilian ang NoSQL para sa high-bandwidth, low-latency na mga kaso ng paggamit na nangangailangan ng pahalang na pag-scale nang lampas sa isang pagkakataon.

Pagganap

Ang pagganap ay higit sa lahat ay nakasalalay sa disk subsystem. Ang pag-optimize ng mga query, index, at istraktura ng talahanayan ay madalas na kinakailangan para sa maximum na pagganap.

Karaniwang nakadepende ang performance sa laki ng pinagbabatayan na cluster ng hardware, latency ng network, at application sa pagtawag.

Pagsusukat

Ang mga relational database ay karaniwang nagsusukat sa pamamagitan ng pagpapataas ng computing power ng hardware o sa pamamagitan ng pagdaragdag ng hiwalay na mga kopya para sa mga read workload.

Karaniwang sinusuportahan ng mga database ng NoSQL ang mataas na separability sa pamamagitan ng scalable access patterns batay sa isang distributed architecture. Pinapabuti nito ang throughput at naghahatid ng pare-parehong pagganap sa halos walang limitasyong sukat.

API

Ang mga kahilingan para sa pagsulat at pagkuha ng data ay nakasulat sa SQL. Ang mga query na ito ay na-parse at isinasagawa ng isang relational database.

Nagbibigay-daan ang mga Object-oriented API sa mga developer ng application na madaling magsulat at kumuha ng mga istruktura ng data. Gamit ang mga partition key, maaaring maghanap ang mga application ng mga pares ng key-value, hanay ng column, o semi-structured na dokumento na naglalaman ng mga serial object at attribute ng application.