Nosql, baze podataka: pregled, primjeri i područja primjene

NoSQL je skladište koje ne odgovara modelu relacione baze podataka i njihovim karakteristikama, nemaju šeme, ne spajaju se i ne garantuju svojstvo kiseline. NO-sistem skalira horizontalno i koristi široku količinu glavne memorije računara, rješavajući problem velike količine informacija.

Vlasnički vlasnički tipovi su nova metodologija za razvoj nerelacionih NoSQL baza podataka, koju implementiraju velike kompanije kako bi zadovoljile korporativne potrebe, kao što je Googleov BigTable, koji se smatra prvim NoSQL sistemom, i Amazon DynamoDB. Uspjeh ovih sistema označio je početak razvoja niza sličnih sistema baza podataka otvorenog koda i vlasničkih baza podataka, od kojih su najpopularnije Hypertable, Cassandra, MongoDB, DynamoDB,

NoSQL Evolucija

Web je prepoznao problem SQL skalabilnosti.2.0 kompanije sa ogromnim, rastućim potrebama za podacima i infrastrukturom, kao što su Google, Amazon i Facebook. Našli su svoje rješenja za probleme, implementacijom BigTable, DynamoDB i Cassandra tehnologija. Sve veće interesovanje dovelo je do pojave brojnih NoSQL sistema za upravljanje bazama podataka (DBMS) sa naglaskom na performanse, pouzdanost i doslednost. Brojne postojeće strukture indeksiranja ponovo su korištene i poboljšane za poboljšanje performansi pretrage i čitanja.

Termin je skovao Calor Strozzi još 1998. godine, a vaskrsao ga je 2009. zaposlenik Rackspacea Eric Evans za rješavanje problema web kompanija s velikim obimom operacija i informacija.

Termin je skovao Calor Strozzi

Jedna ključna razlika između NoSQL baza podataka i tradicionalnih relacijskih baza podataka je ta što je prva oblik nestrukturirane memorije.

Nestrukturirano skladište

Tako NoSQL nema fiksnu strukturu tabele, kao u relacionom sistemu. Ova tabela pruža kratko Poređenje NoSQL i SQL mogućnosti.

Kratko Poređenje karakteristika

Treba napomenuti da tabela prikazuje poređenje na nivou baze podataka, a ne DBMS koji implementira oba modela. Ovi sistemi pružaju vlasničke metode za prevazilaženje nekih problema i nedostataka oba sistema, što značajno poboljšava performanse i pouzdanost.

Vrste repozitorija informacija

NoSQL ključna vrijednost koristi se heš tabela

NoSQL Tip baze podataka ključ-vrijednost koristi heš tabelu u kojoj jedinstveni ključ ukazuje na element. Mogu se organizirati u logičke grupe, koje zahtijevaju jedinstvenost u svojim granicama. Ovo vam omogućava da koristite identične tastere u različitim logičkim grupama. Neke DB implementacije obezbjeđuju mehanizme keširanja koji značajno poboljšavaju njihove performanse.

Sve, potrebno ti je za rad sa stavkama pohranjenim u bazi podataka-Ovo je ključ. Podaci se čuvaju kao JSON string ili BLOB (veliki binarni objekt). Jedan od najveći nedostaci ovog oblika su nedostatak konzistentnosti na nivou DB. Ovo se može dodati tokom razvoja NoSQL baze podataka od strane programera sa sopstvenim kodom, ali takođe zahteva više napora, zbog složenosti implementacije i vremena. Najpoznatija NoSQL baza podataka izgrađena u trgovini ključnih vrijednosti je Amazon DynamoDB.

Spremišta dokumenata su slična spremištima ključnih vrijednosti po tome što ne sadrže šemu i zasnivaju se na modelu vrijednosti. Stoga obje vrste imaju isto prednosti i mane. Oba nemaju konzistentnost na nivou baze podataka, što sprečava aplikacije da pružaju pouzdanije funkcije. Međutim, postoje neke ključne razlike među njima. U spremištima dokumenata, vrijednosti (dokumenti) obezbjeđuju kodiranje pohranjenih podataka. Takva kodiranja mogu biti XML, JSON ili BSON (binarni JSON kod). Najpopularnija aplikacija za bazu podataka koja koristi skladište dokumenata je MongoDB.

U bazi podataka porodice kolona, podaci se čuvaju u kolonama, a ne u redovima, kao što se radi u većini sistema za upravljanje relacionim bazama podataka. Skladište stubova se sastoji od jedan ili više porodica kolona koje logično grupišu određene kolone u bazi podataka. Ključ se koristi za identifikaciju i određivanje broja stupaca s atributom ključnog prostora koji definira njegov opseg. Svaka kolona sadrži tuple imena i vrijednosti, poredane i odvojene zarezima.

Trgovine kolona imaju brz pristup za čitanje/pisanje pohranjenim podacima. U njemu kolone reda odgovaraju jednoj koloni i čuvaju se kao jedan zapis na disku. Ovo omogućava brži pristup tokom operacija čitanja / pisanja. Najpopularnije baze podataka koje koriste skladište kolona NoSQL baze podataka, primjeri: Google BigTable, HBase i Cassandra.

NoSQL Graph bd baza podataka koristi usmjerenu Graf strukturu za predstavljanje podataka. Grafikon se sastoji od ivica i čvorova.

Kako funkcioniše baza podataka

Vrste repozitorija informacija

NoSQL radi kao fajl koji čuva sve podatke, omogućavaju vam da radite sa ogromnom količinom informacija i organizujete ih tako da korisnici mogu da im pristupe u bilo kom trenutku kada im zatreba. Trenutno postoje različite vrste NoSQL-a, svaki od njih radi drugačije, većina je napisana u C ++. Možemo reći da NoSQL baze podataka centriraju svoje funkcije na osnovu:

  1. Horizontalna skalabilnost sa mogućnošću povećanja njegove veličine, povećanja skladišnog prostora u bazi podataka bez predrasuda na posao.
  2. Cloud technology. Većina NoSQL baza podataka svoje skladište zasniva u oblaku kako bi oslobodila više prostora. Pored toga, imaju čvorove za replikaciju informacija.
  3. Efikasno korišćenje resursa. Kompanije su trenutno u procesu tehnološke tranzicije, pa je praktično neophodno da imaju bazu podataka koja im omogućava implementaciju novih tehnoloških alata. NoSQL podaci rade tačno za to - fleksibilan model omogućava vam brzo prilagođavanje novim alatima.
  4. Šema besplatnog funkcionisanja. NoSQL nema krut sistem, tako da programeri imaju slobodu da mijenjaju podatke po potrebi. To znači da ako treba da promenite definiciju polja ili tipa podataka, onda u tome nema problema, za razliku od SQL baza podataka, gde su promene ove vrste povezane sa velikim poteškoćama.
  5. Response speed. Brzina u bazi podataka se meri kašnjenjem, što je vreme odziva, NoSQL je zabrinut za smanjenje vremena kašnjenja što je više moguće.
  6. Korišćenje indeksa. SQL i NoSQL trebaju indekse jer se upiti ne mogu napraviti u milionima zapisa ako indeks nije konfiguriran. U NoSQL-u se indeksi generišu u obliku B-stabla, odnosno čvorovi su balansirani, što znači da se brzina pretrage povećava.

Sistemi upravljanja

Sljedeća tabela pruža kratko poređenje između različitih sistema upravljanja bazama podataka NoSQL.

Sistemi upravljanja

MongoDB ima Fleksibilno skladište šeme-to znači da pohranjeni objekti ne moraju nužno imati istu strukturu ili polja. Takođe ima neke funkcije optimizacije koje međusobno distribuiraju zbirke podataka, što rezultira ukupnim poboljšanjem performansi i uravnoteženijim sistemom. Ostali sistemi NoSQL, kao što je Apache CouchDB, takođe je baza podataka tipa za skladištenje dokumenata i ima mnogo zajedničkih funkcija sa MongoDB-om, osim što se bazi podataka može pristupiti pomoću RESTful API-ja.

REST je arhitektonski stil koji se sastoji od koordiniranog skupa arhitektonskih ograničenja primijenjenih na komponente, konektore i elemente podataka na internetu. Ona se zasniva na "klijent-server" keširani komunikacijski protokol bez državljanstva, na primjer, HTTP protokol. RESTful aplikacije koriste HTTP zahtjeve za objavljivanje, čitanje i brisanje podataka. Što se tiče baza podataka kolona, Hypertable je NoSQL baza podataka napisana na C++ i zasnovana na Google BigTable-u. Hypertable podržava distribuciju skladišta podataka po čvorovima za maksimalnu skalabilnost, kao što su MongoDB i CouchDB.

Cassandra Hibridni Sistem

Cassandra Hibridni Sistem

Jedna od najčešće korištenih NoSQL baza podataka je Cassandra, koju je razvio Facebook. Cassandrin cilj je bio stvoriti DBMS koji nema jedinstvenu tačku neuspjeha i pruža maksimalnu dostupnost. Cassandra je uglavnom baza podataka za čuvanje kolona. U nekim studijama spominje se kao hibridni sistem zasnovan na Google BigTable-u, koji je baza podataka za pohranu kolona i Amazon DynamoDB, svojstvena tipu ključne vrijednosti. Ključevi u Cassandri ukazuju na skup porodica kolona baziranih na Google BigTable distribuiranom sistemu datoteka i funkcijama Dynamo accessibility (distribuirana hash tabela).

Glavne karakteristike Cassandre uključuju:

  1. Nema jedinstvene tačke neuspjeha. Da biste to učinili, mora raditi na grupi čvorova, a ne na jednoj mašini. To ne znači da su podaci o svakom klasteru isti. Kada se desi kvar u jednom od čvorova, podaci na njemu će biti nedostupni. Međutim, drugi čvorovi i podaci će i dalje biti dostupni.
  2. Distribuirano heširanje je šema koja pruža funkcionalnost heš tabele na način da dodavanje ili uklanjanje jednog slota ne menja značajno mapiranje ključeva u slotove. Ovo vam omogućava da distribuirate opterećenje na serverima ili čvorovima u skladu sa njihovim kapacitetom i minimizirate zastoje.
  3. Relativno jednostavan za korištenje klijentski interfejs. Koristi Apache štedljivost za svoj klijentski interfejs, koji pruža RPC klijent na nekoliko jezika, ali većina programera preferira alternative otvorenog koda zasnovane na Apple štedljivosti, na primer, Hector.
  4. Replikacija podataka. Zapravo, odražava podatke za druge čvorove u klasteru. Replikacija može biti nasumična ili specifična za maksimalnu zaštitu podataka, na primjer, postavljanjem ključa u čvor drugog centra podataka.
  5. , politika razdvajanja odlučuje gdje i na koji čvor postaviti ključ. Ovo može biti slučajan ili uređen proces. Kada koristi obje vrste politika razdvajanja, Cassandra može pronaći ravnotežu između optimizacije performansi opterećenja i upita.
  6. Dosljednost. Replikacija komplikuje konzistentnost. To je zato što svi čvorovi moraju biti ažurirani u bilo kom trenutku sa najnovijim vrijednostima ili tokom početka operacije čitanja.
  7. Radnje čitanja/pisanja. Klijent šalje zahtjev za jedan čvor. Čvor, prema politici replikacije, čuva podatke u klasteru. Svaki čvor prvo modifikuje podatke u dnevniku urezivanja i ažurira strukturu tabele, a obe promene se izvode sinhrono. Zahtjev za čitanje šalje se jednom čvoru koji sadrži podatke u skladu s politikom podjele/raspodjele.

Indeksirajuće strukture

Indeksirajuće strukture

Indeksiranje je proces povezivanja ključa sa lokacijom odgovarajućeg unosa podataka u DBMS-u. Postoje mnoge strukture za indeksiranje podataka koje se koriste u NoSQL bazama podataka. B-drvo je jedan od najčešći indeksne strukture u DBMS-u. U njemu, unutrašnji čvorovi mogu imati varijabilni broj podređenih čvorova u unaprijed definiranom rasponu.

Jedna od glavnih razlika u odnosu na druge strukture drveća, kao što je AVL, je ta što Vam B-drvo omogućava da imate varijabilni broj podređenih čvorova, što znači manje balansiranja stabla, ali veći gubitak prostora. B + drvo je jedna od najpopularnijih varijanti B-stabala. Ovo poboljšanje (za razliku od B-stabla) zahtijeva da svi ključevi budu u listovima.

Struktura podataka T-Trees razvijena je kombinacijom funkcija AVL-Trees i B-Trees. AVL stabla su tipa samobalansirajućih binarnih stabala pretrage, dok su b stabla neuravnotežena, a svaki čvor može imati različit broj djece.

U t-stablu, struktura je vrlo slična AVL stablu i B-stablu. Svaki čvor čuva više od jednog tupla {ključ-vrijednost, pointer}. Pored toga, binarna pretraga se koristi u kombinaciji sa čvorovima i više torkova za pružanje bolje memorije i performansi.

T-stablo ima tri vrste čvorova: s desnim i lijevim podređenim čvorom, lisnatim čvorom bez podređenih čvorova i polulistnim čvorom sa samo jednim podređenim čvorom. Smatra se da T-stabla imaju najbolje ukupne performanse.

Uobičajene greške u aplikaciji baze podataka

Ima ih tri česte greške, koje organizacije čine kada je u pitanju NoSQL:

  1. NoSQL je više od skalabilnosti, ne možete izjednačiti NoSQL sa web skalom. Rodonačelnici modernih nerelacijskih baza podataka bile su kompanije poput Googlea i Amazona, koje su se fokusirale na rješavanje problema skalabilnosti u web okruženju.
  2. Razvijaci moraju da se razvijaju. U jednom vrhunskom web projektu, loše odabrani integracijski tim stvorio je ogroman problem, a za njegovo rješavanje bilo je potrebno vrijeme i milioni dolara.
  3. Komplikovana distribucija. Ništa ne može zamijeniti znanje i iskustvo ni u implementaciji ni u procesu administracije. Dešava se da se upit koji se brzo izvršava na lokalnoj razvojnoj mašini neće horizontalno skalirati na stotinama mašina. Savremena aplikacija ima distribuiranu arhitekturu i istovremeno mnogo korisnika, koji zahtijevaju brze odgovore.

Prednosti NoSQL-a

NoSQL i SQL baze podataka se međusobno takmiče, ali, prema mnogim stručnjacima, prva ima više prednosti u odnosu na tradicionalne relacijske baze podataka:

  1. Imaju jednostavnu i fleksibilnu strukturu.
  2. Nema šema.
  3. Na osnovu "parovi ključ-vrijednost".
  4. Neki tipovi uključuju skladištenje kolona, dokumenata, ključnih vrijednosti, grafikona, objekata, XML-a i drugih načina podataka.
  5. Obično svaka vrijednost u bazi podataka ima ključ. Neki repozitoriji omogućavaju programerima da pohranjuju serijalizirane objekte, a ne samo jednostavne vrijednosti niza.
  6. NoSQL otvorenog koda ne zahtijeva skupe naknade za licencu i može raditi na jeftinom hardveru, što njihovu implementaciju čini isplativom.
  7. Kada radite sa NoSQL-om, bez obzira da li su otvoreni ili vlasnički, ekstenzija je lakša i jeftinija, nego kada radite sa relacionim bazama podataka. Izvodi se horizontalnim skaliranjem i raspodjelom opterećenja po svim čvorovima, a ne tipom vertikalnog skaliranja koji se obično izvodi u relacijskim sistemima baza podataka i zamjenjuje glavni host snažnijim.

Nedostaci ne-sistema

NoSQL baze podataka rade na različite načine, sve zavisi od dokumenata koji se u njima čuvaju, ali možemo reći da su važan alat u savremenim kompanijama jer čuvaju potrebne informacije korisnika i operacija.

Nisu savršeni, tako da nisu uvek pravi izbor za programere. Na jedna ruka, , većina njih ne podržava funkcije pouzdanosti koje su inicijalno podržane sistemima relacionih baza podataka. Ove karakteristike pouzdanosti mogu se sumirati kao atomičnost, konzistentnost, izolacija i trajnost. To znači da NoSQL, koji ne podržavaju ove karakteristike, pružaju dosledno trgovanje za performanse i skalabilnost.

Da bi održali pouzdanost i konzistentnost karakteristika, programeri moraju implementirati sopstveni vlasnički kod, što povećava složenost sistema. Ovo ograničava broj aplikacija koje se mogu osloniti na NoSQL za sigurne i pouzdane transakcije, kao što su bankarski sistemi.

Primjena NoSQL baze podataka

Korišćenje NoSQL baze podataka

Akademici, Inženjeri, softverski arhitekti, dizajneri aplikacija i programeri zahtijevaju dublje poznavanje struktura podataka koje ranije nisu bile potrebne za relacijske baze podataka. Lideri na tržištu su Hadoop i MongoDB, a slijede ih "Cassandra", "Rotkvica", CouchDB i "Riakom". Savremena istraživanja pokazuju da postoje dva NOSQL proizvoda koji dominiraju sistemskim inženjerima, software architects, od strane programera među desetak sličnih tehnologija je MongoDB i Hadoop.

Tržište pokazuje da velike kompanije koriste nove metodologije razvoja NoSQL baze podataka i integrišu ih u svoje proizvode (Oracle, IBM). Tržište baze podataka postepeno se pretvara u standardni prolaz, Redis i MongoDB, Edlich. Proizvodi kao što su Neo4j, MongoDB i CouchDB postali su predmet podrške i ulaganja rizičnog kapitala.