Tere, sĂ”brad. Enne lĂ€hiaegsete mai pĂŒhade teise osa algust jagame teiega materjali, mille oleme tĂ”lkinud seoses uue kursuse voolu kĂ€ivitamisega. .

Rakenduste arendajad kulutavad palju aega erinevate andmebaaside vÔrdlemiseks, et valida see, mis sobib kÔige paremini ettenÀhtud töökoormusele. NÔuded vÔivad hÔlmata andmemudeli lihtsustamist, tehingu garantiisid, lugemise/kirjutamise jÔudlust, horisontaalset skaleeritavust ja tÔrketaluvust. Traditsiooniliselt algab valik andmebaasi kategooriast, SQL vÔi NoSQL, kuna iga kategooria pakub selget kompromisside kogumit. KÔrge jÔudlus madala viivituse ja suure lÀbilaskevÔime osas peetakse sageli kompromissituks nÔudeks ja seetÔttu on see vajalik iga valitud andmebaasi jaoks.
KĂ€esoleva artikli eesmĂ€rk on aidata rakenduste arendajatel teha Ă”ige valik SQL ja NoSQL vahel rakenduse andmemudeli kontekstis. Uurime ĂŒht SQL-andmebaasi, nimelt PostgreSQL-i ja kahte NoSQL-andmebaasi â Cassandra ja MongoDB, et rÀÀkida andmebaasi projekteerimise pĂ”hitĂ”dedest, nĂ€iteks tabelite loomine, nende tĂ€itmine, andmete lugemine tabelist ja nende kustutamine. JĂ€rgmisel artiklil vaatame kindlasti indekseid, tehinguid, JOIN-e, TTL direktiive ja andmebaaside projekteerimist JSONi alusel.
Mis on SQL-i ja NoSQL-i erinevus?
SQL-andmebaasid suurendavad rakenduse paindlikkust ACID-tehingu garantii kaudu ning nende vĂ”imega kĂŒsida andmeid JOIN-ide kaudu ootamatul viisil olemasolevate normaliseeritud relatsiooniliste andmebaasi mudelite peal.
Arvestades nende monoliitset/ĂŒhe sĂ”lme arhitektuuri ja master-slave replikatsioonimudeli kasutamist ĂŒleliigsuse tagamiseks, puuduvad traditsioonilistel SQL-andmebaasidel kaks olulist omadust â lineaarne salvestamise skaleeritavus (st automaatne jagamine mitmele sĂ”lmele) ja automaatne/nullkaotus andmeid. See tĂ€hendab, et saadud andmete maht ei tohiks ĂŒletada ĂŒhe sĂ”lme maksimaalset kirjutamise lĂ€bilaskevĂ”imet. Lisaks tuleb arvestada, et teatud ajavahemiku jooksul andmed vĂ”ivad olla kadunud, kui rÀÀgime talitlushĂ€iretest (ressursisegmentide jagamata arhitektuur). Siin tuleb meeles pidada, et hiljutised kinnitused pole veel alluvates (slave) koopiates kajastunud. Uuendused ilma seisakuta on samuti SQL-andmebaasides raskesti saavutatavad.
NoSQL-andmebaasid on oma olemuselt tavaliselt hajutatud, st andmed jagatakse sektsioonideks ja jaotatakse mitme sĂ”lme vahel. Need nĂ”uavad denormaliseerimist. See tĂ€hendab, et sisestatud andmed tuleb ka mitu korda kopeerida, et vastata konkreetsetele pĂ€ringutele, mida saadate. Ăks peamine eesmĂ€rk on saavutada kĂ”rge jĂ”udlus, vĂ€hendades lugemise ajal kergesti kĂ€tte saadavate shardide arvu. SeetĂ”ttu vĂ€idetakse, et NoSQL nĂ”uab teilt oma pĂ€ringute modelleerimist, samas kui SQL nĂ”uab andmete modelleerimist.
NoSQL keskendub kÔrge jÔudluse saavutamisele hajutatud klastris ja see on peamine alus paljude andmebaasi projekteerimise kompromisside jaoks, mis hÔlmavad ACIDi tehingute tagatiste kaotamist, JOIN-e ja kooskÔlastatud globaalseid sekundaarindekseid.
On arvamus, et kuigi NoSQL-andmebaasid tagavad lineaarse salvestamise skaleeritavuse ja kÔrge talitlushÀirete vÀltimise, teeb tehingutagatiste kaotamine need sobimatuks kriitiliste andmete jaoks.
JÀrgmine tabel nÀitab, kuidas NoSQL-is andmete modelleerimine erineb SQL-ist.

SQL ja NoSQL: Miks on mÔlemad vajalikud?
Reaalsetel rakendustel, millel on suur kasutajaskond, nagu Amazon.com, Netflix, Uber ja Airbnb, on keeruliste mitmekesiste ĂŒlesannete tĂ€itmine. NĂ€iteks peab e-kaubanduse rakendus nagu Amazon.com salvestama kergekaalulisi, kriitiliselt olulisi andmeid, nagu kasutajate, toodete, tellimuste ja arveandmete info, koos raskete, kuid vĂ€hem tundlike andmetega, nagu tooteĂŒlevaated, klienditeeninduse sĂ”numid, kasutajate tegevus, tagasiside ja soovitused. Loomulikult tuginevad need rakendused vĂ€hemalt ĂŒhele SQL-andmebaasile ja vĂ€hemalt ĂŒhele NoSQL-andmebaasile. Piirkondlikes ja globaalsetes sĂŒsteemides toimib NoSQL-andmebaas geograafiliselt jaotatud vahemĂ€luna usaldusvÀÀrses allikas, SQL-andmebaas, mis töötab ĂŒhes piirkonnas.
Kuidas ĂŒhendab YugaByte DB endas SQL-i ja NoSQL-i?
YugaByte DB, mis on ehitatud logipĂ”hisel segamootoril salvestamise, automaatse shardimise, shardide jagatud konsensuse replikatsiooni ja jaotatud ACID-tehingute jaoks (inspireeritud Google Spannerist), on maailma esimene avatud lĂ€htekoodiga andmebaas, mis on samaaegselt ĂŒhilduv NoSQL-i (Cassandra & Redis) ja SQL-i (PostgreSQL) meetoditega. Nagu allolevast tabelist nĂ€htub, lisab YCQL, YugaByte DB Cassandra ĂŒhilduv API, ĂŒhetasandi ja mitme vĂ”tme ACID-tehingute mĂ”isted ning globaalsed sekundaarindeksid NoSQL API-sse, avades seelĂ€bi uue ajastu tehinguliste NoSQL-andmebaaside jaoks. Lisaks sellele lisab YCQL, YugaByte DB PostgreSQL ĂŒhilduv API, dokumenteeritud kirjutamislinna lineaarne skaleerimine ja automaatne tĂ”rketaluvus SQL API-sse, tĂ”estades maailmale jaotatud SQL-andmebaaside olemasolu. Kuna YugaByte DB andmebaas on oma olemuselt tehinguline, on nĂŒĂŒd NoSQL API-d vĂ”imalik kasutada kriitiliselt oluliste andmete kontekstis.

Kuidas juba varem artiklis , on valik SQL-i vÔi NoSQL-i vahel YugaByte DB-s tÀielikult sÔltuv pÔhikoormuse omadustest:
- Kui pÔhikoormus koosneb mitme vÔtme JOIN-operatsioonidest, peate YSQL-i valimisel arvestama, et teie vÔtmed vÔivad olla jaotatud mitmele sÔlmele, mis toob kaasa suuremaid latentsusaegu ja/vÔi madalamat lÀbilaskevÔimet vÔrreldes NoSQL-iga.
- Vastasel juhul valige ĂŒks kahest NoSQL API-st, pidades meeles, et saate paremat jĂ”udlust pĂ€ringutes, mida teenindatakse ĂŒhe sĂ”lme kaupa. YugaByte DB vĂ”ib toimida ĂŒhtse andmebaasina keerukate rakenduste jaoks, kus tuleb samal ajal hallata mitmeid töökoormusi.
JĂ€rgmise osa andmemudeli laboratoorium pĂ”hineb YugaByte DB andmebaasidel, mis on ĂŒhilduvad PostgreSQL ja Cassandra API-dega, erinevalt algsetest andmebaasidest. See lĂ€henemine rĂ”hutab lihtsust, millega saab suhelda kahe erineva API-ga (kahel erineval pordil) sama andmebaasiklusteri puhul, erinevalt kahe erineva andmebaasi tĂ€iesti sĂ”ltumatute klastrite kasutamisest.
JÀrgmistes osades tutvume andmemudeli laboratooriumiga, et illustreerida arutatavate andmebaaside erinevusi ja mÔningaid sarnaseid jooni.
Andmemudeli laboratoorium
Andmebaaside installimine
Kuna keskendume andmemudeli projekteerimisele (mitte keerukatele juurutusstruktuuridele), installime andmebaasid Docker konteineritesse kohalikule arvutile ja seejÀrel suhtleme nendega vastavate kÀsurea liideste abil.
PostgreSQL ja Cassandra ĂŒhilduv YugaByte DB andmebaas
mkdir ~/yugabyte && cd ~/yugabyte
wget https://downloads.yugabyte.com/yb-docker-ctl && chmod +x yb-docker-ctl
docker pull yugabytedb/yugabyte
./yb-docker-ctl create --enable_postgresMongoDB
docker run --name my-mongo -d mongo:latestKÀsurea kaudu juurdepÀÀs
KĂ”rge, ĂŒhendame andmebaasidega, kasutades vastava API jaoks kĂ€surea liidest.
PostgreSQL
â see on kĂ€surea liides PostgreSQL-i jaoks. Mugavuse huvides on YugaByte DB varustatud psql-iga otse bin kaustas.
docker exec -it yb-postgres-n1 /home/yugabyte/postgres/bin/psql -p 5433 -U postgresCassandra
â see on kĂ€surea liides, mis suhtleb Cassandra ja selle ĂŒhilduvate andmebaasidega CQL (Cassandra pĂ€ringukeel) kaudu. Mugavuse huvides on YugaByte DB varustatud cqlsh kaustas bin.
Pane tÀhele, et CQL on inspireeritud SQL-ist ja sisaldab sarnaseid mÔisteid nagu tabelid, read, veerud ja indeksid. Kuid kui NoSQL keel, lisab see teatud piirangute komplekti, millest enamikku kÀsitleme ka teistes artiklites.
docker exec -it yb-tserver-n1 /home/yugabyte/bin/cqlshMongoDB
â on kĂ€surea liides MongoDB-ga suhtlemiseks. Seda vĂ”ib leida MongoDB paigaldamise bin-kaustast.
docker exec -it my-mongo bash
cd bin
mongoTabeli loomine
Praegu saame andmebaasiga suhelda erinevate toimingute tĂ€itmiseks kĂ€surea kaudu. Alustame tabeli loomisest, mis salvestab teavet laulude kohta, mille on kirjutanud erinevad esitajad. Need laulud vĂ”ivad olla osa albumist. Samuti on vĂ”imalikud valikulised atribuudid laulu jaoks â vĂ€ljaandmise aasta, hind, ĆŸanr ja reiting. Peame arvestama tĂ€iendavate atribuutidega, mis vĂ”ivad tulevikus vajalikuks osutuda, 'siltide' kaudu. See vĂ”ib sĂ€ilitada poolstruktureeritud andmeid vĂ”tme-vÀÀrtuse paaride kujul.
PostgreSQL
CREATE TABLE Music (
Artist VARCHAR(20) NOT NULL,
SongTitle VARCHAR(30) NOT NULL,
AlbumTitle VARCHAR(25),
Year INT,
Price FLOAT,
Genre VARCHAR(10),
CriticRating FLOAT,
Tags TEXT,
PRIMARY KEY(Artist, SongTitle)
); Cassandra
Tabeli loomine Cassandras on vĂ€ga sarnane PostgreSQL-iga. Ăks peamisi erinevusi on jaotuse piirangute puudumine (nt NOT NULL), kuid see kuulub rakenduse vastutusele, mitte NoSQL andmebaasile.. Esmane vĂ”ti koosneb jaotuse vĂ”tme (samba Artist jĂ€rgmises nĂ€ites) ja klasterdamise veergude kogumist (samba SongTitle alljĂ€rgnevas nĂ€ites). Jaotuse vĂ”ti mÀÀrab, millises jaotuses/shardis rida asub, ja klasterdamise veerud nĂ€itavad, kuidas andmed peavad olema korraldatud hetkelises shardis.
CREATE KEYSPACE myapp;
USE myapp;
CREATE TABLE Music (
Artist TEXT,
SongTitle TEXT,
AlbumTitle TEXT,
Year INT,
Price FLOAT,
Genre TEXT,
CriticRating FLOAT,
Tags TEXT,
PRIMARY KEY(Artist, SongTitle)
);MongoDB
MongoDB korraldab andmeid andmebaaside (Database) (sarnaselt Cassandra Keyspace'ile), kus on kollektsioonid (Collections) (sarnaselt tabelitele), milles on dokumentide (Documents) (sarnaselt tabeli ridadele). MongoDB-s ei ole pÔhimÔtteliselt vajalik algse skeemi mÀÀratlemine. KÀsk «use database», nagu allpool nÀidatud, loob andmebaasi eksemplari esmakordsel kutsumisel ja muudab konteksti uuele loodud andmebaasile. Isegi kollektsioone ei pea eraldi looma, need luuakse automaatselt, kui lisatakse esimene dokument uude kollektsiooni. Pange tÀhele, et MongoDB kasutab vaikimisi testandmebaasi, seega igasugused kollektsioonide taseme toimingud ilma kindla andmebaasi mÀÀramiseta, toimuvad vaikimisi selles.
use myNewDatabase;Teabe saamine tabeli kohta
PostgreSQL
d Music
Table "public.music"
Column | Type | Collation | Nullable | Default
--------------+-----------------------+-----------+----------+--------
artist | character varying(20) | | not null |
songtitle | character varying(30) | | not null |
albumtitle | character varying(25) | | |
year | integer | | |
price | double precision | | |
genre | character varying(10) | | |
criticrating | double precision | | |
tags | text | | |
Indexes:
"music_pkey" PRIMARY KEY, btree (artist, songtitle)Cassandra
KIRJELDA TABELIT MUSIC;
CREATE TABLE myapp.music (
artist text,
songtitle text,
albumtitle text,
year int,
price float,
genre text,
tags text,
PRIMARY KEY (artist, songtitle)
) WITH CLUSTERING ORDER BY (songtitle ASC)
AND default_time_to_live = 0
AND transactions = {'enabled': 'false'};MongoDB
kasuta myNewDatabase;
nÀita kogusid;Andmete lisamine tabelisse
PostgreSQL
INSERT INTO Music
(Artist, SongTitle, AlbumTitle,
Year, Price, Genre, CriticRating,
Tags)
VALUES(
'No One You Know', 'Call Me Today', 'Somewhat Famous',
2015, 2.14, 'Country', 7.8,
'{"Composers": ["Smith", "Jones", "Davis"],"LengthInSeconds": 214}'
);
INSERT INTO Music
(Artist, SongTitle, AlbumTitle,
Price, Genre, CriticRating)
VALUES(
'No One You Know', 'My Dog Spot', 'Hey Now',
1.98, 'Country', 8.4
);
INSERT INTO Music
(Artist, SongTitle, AlbumTitle,
Price, Genre)
VALUES(
'The Acme Band', 'Look Out, World', 'The Buck Starts Here',
0.99, 'Rock'
);
INSERT INTO Music
(Artist, SongTitle, AlbumTitle,
Price, Genre,
Tags)
VALUES(
'The Acme Band', 'Still In Love', 'The Buck Starts Here',
2.47, 'Rock',
'{"radioStationsPlaying": ["KHCR", "KBQX", "WTNR", "WJJH"], "tourDates": { "Seattle": "20150625", "Cleveland": "20150630"}, "rotation": Heavy}'
);Cassandra
Ăldiselt on vĂ€ljend INSERT Cassandra's vĂ€ga sarnane PostgreSQL-ile. Siiski on ĂŒks suur erinevus semantikas. Cassandra INSERT on tegelikult operatsioon UPSERT, kus ritta lisatakse viimasena mÔÔdetud vÀÀrtused, juhul kui rida juba eksisteerib.
Andmete sisestamine toimub sarnaselt PostgreSQL-iga
INSERTĂŒle
.
MongoDB
Kuigi MongoDB on NoSQL andmebaas, on selle andmete sisestamise operatsioon Cassandra'ga samavÀÀrne, kuid nende semantika on erinev. MongoDB ei oma vÔimalusi UPSERT, mistÔttu sarnaneb see PostgreSQL-iga. Andmete lisamine ilma _idspecified toob kaasa uue dokumendi lisamise kogu.
db.music.insert( {
artist: "Keegi Sinu Seast",
songTitle: "Helista TĂ€na",
albumTitle: "Veidi Kuulus",
year: 2015,
price: 2.14,
genre: "Kantri",
tags: {
Composers: ["Smith", "Jones", "Davis"],
LengthInSeconds: 214
}
}
);
db.music.insert( {
artist: "Keegi Sinu Seast",
songTitle: "Minu Koer Spot",
albumTitle: "Hei NĂŒĂŒd",
price: 1.98,
genre: "Kantri",
criticRating: 8.4
}
);
db.music.insert( {
artist: "The Acme Band",
songTitle: "Vaata VĂ€lja, Maailm",
albumTitle:"Raha Algab Siit",
price: 0.99,
genre: "Rock"
}
);
db.music.insert( {
artist: "The Acme Band",
songTitle: "Endiselt Armastuses",
albumTitle:"Raha Algab Siit",
price: 2.47,
genre: "Rock",
tags: {
radioStationsPlaying:["KHCR", "KBQX", "WTNR", "WJJH"],
tourDates: {
Seattle: "20150625",
Cleveland: "20150630"
},
rotation: "Hea"
}
}
);
Tabeli pÀring
VĂ”ib-olla on SQL ja NoSQL vahel kĂ”ige olulisem erinevus pĂ€ringute koostamise osas vĂ€ljendite kasutamine KUST ja KUS. SQL vĂ”imaldab pĂ€rast vĂ€ljendit KUST valida mitu tabelit, ning vĂ€ljendiga KUS vĂ”ib olla ĂŒkskĂ”ik millise keerukusega (sealhulgas operatsioonid JOIN tabelite vahel). Kuid NoSQL kaldub kehtestama ranged piirangud KUST, töötades ainult ĂŒhe mÀÀratud tabeliga. KUS, alati peab olema mÀÀratud esmavĂ”ti. See on seotud NoSQLi jĂ”udluse suurendamise sooviga, millest me varem rÀÀkisime. See soov viib igasuguste ristskeemide ja ristsĂ”lmeline suhtluse vĂ€hendamiseni. See vĂ”ib pĂ”hjustada suuri viivitusi sĂ”lmede vahelise suhtlemise ajal pĂ€ringule vastamisel ning seetĂ”ttu on seda parim pĂ”himĂ”tteliselt vĂ€ltida. NĂ€iteks nĂ”uab Cassandra, et pĂ€ringud oleksid piiratud teatud operaatoritega (lubatud on ainult =, IN, , =>, <=) sektsioonide vĂ”tmete puhul, vĂ€lja arvatud juhul, kui pĂ€ring on teisejĂ€rguline indeks (siin on lubatud ainult operaator =).
PostgreSQL
Allpool on toodud kolm pÀringu nÀidet, mida SQL andmebaas suudab kergesti tÀita.
- Kuva kÔik esineja lood;
- Kuva kÔik esineja lood, mis vastavad pealkirja esimesele osale;
- Kuva kÔik esineja lood, mille pealkirjas on teatud sÔna ja mille hind on alla 1.00.
SELECT * FROM Music
WHERE Artist='No One You Know';
SELECT * FROM Music
WHERE Artist='No One You Know' AND SongTitle LIKE 'Call%';
SELECT * FROM Music
WHERE Artist='No One You Know' AND SongTitle LIKE '%Today%'
AND Price > 1.00;Cassandra
Ălaltoodud pĂ€ringutest töötab PostgreSQLis ainult esimene Cassandra's muutmata, kuna operaator LIKE ei saa rakendada klasterdamise veergude, nagu SongTitle. Sel juhul on lubatud ainult operaatorid = ja IN.
SELECT * FROM Music
WHERE Artist='No One You Know';
SELECT * FROM Music
WHERE Artist='No One You Know' AND SongTitle IN ('Call Me Today', 'My Dog Spot')
AND Price > 1.00;MongoDB
Nagu eelnevates nÀidetes nÀidatud, on MongoDB pÔhimeetod pÀringute loomiseks . See meetod sisaldab selgelt kogu kollektsiooni nime (music allpooltoodud nÀites), seetÔttu on pÀring mitme kollektsiooni kohta keelatud.
db.music.find( {
artist: "No One You Know"
}
);
db.music.find( {
artist: "No One You Know",
songTitle: /Call/
}
);Lugege kÔiki tabeli ridu
KĂŒsimine kĂ”ikide ridadel â see on lihtsalt erijuht eelnevalt vaadatud pĂ€ringute mallist.
PostgreSQL
SELECT *
FROM Music;Cassandra
Sarnane ĂŒlaltoodud PostgreSQL nĂ€itega.
MongoDB
db.music.find( {} );Andmete muutmine tabelis
PostgreSQL
PostgreSQL pakub kÀsku UPDATE andmete muutmiseks. Sellel puuduvad vÔimalused UPSERT, seega lÔpetatakse selle kÀsu tÀitmine veaga, kui ridu enam andmebaasis ei ole.
UPDATE Music
SET Genre = 'Disco'
WHERE Artist = 'The Acme Band' AND SongTitle = 'Still In Love';Cassandra
Cassandra's on UPDATE analoogne PostgreSQL. UPDATE on sama tÀhendusega UPSERT, sarnane INSERT.
Sarnane ĂŒlaltoodud PostgreSQL nĂ€itega.
MongoDB
Tehe MongoDB saab tĂ€ielikult uuendada olemasolevat dokumenti vĂ”i ainult teatud vĂ€lju. Vaikimisi uuendab see ainult ĂŒhte dokumenti semantika vĂ€lja lĂŒlitamisega. UPSERT. Mitme dokumendi uuendamise ja kĂ€itumine on sarnane. UPSERT vĂ”ib rakendada, seadistades toimingule tĂ€iendavad lipud. Nagu nĂ€iteks allolevas nĂ€ites uuendatakse konkreetse esineja ĆŸanri tema laulu jĂ€rgi.
db.music.update(
{"artist": "The Acme Band"},
{
$set: {
"genre": "Disco"
}
},
{"multi": true, "upsert": true}
);Andmete eemaldamine tabelist
PostgreSQL
DELETE FROM Music
WHERE Artist = 'The Acme Band' AND SongTitle = 'Look Out, World';Cassandra
Sarnane ĂŒlaltoodud PostgreSQL nĂ€itega.
MongoDB
MongoDB-s on kaks tĂŒĂŒpi toimingut dokumentide kustutamiseks â ja . MĂ”lemad tĂŒĂŒbid eemaldavad dokumente, kuid tagastavad erinevaid tulemusi.
db.music.deleteMany( {
artist: "The Acme Band"
}
);
Tabeli eemaldamine
PostgreSQL
DROP TABLE Music;Cassandra
Sarnane ĂŒlaltoodud PostgreSQL nĂ€itega.
MongoDB
db.music.drop();KokkuvÔte
Arutelud SQL ja NoSQL valikute ĂŒle on kestnud juba ĂŒle 10 aasta. Selle arutelu kaks peamist aspekti on: andmebaasi tuumaarhitektuur (monoliitne, transaktsiooniline SQL versus jaotatud, mitte transaktsiooniline NoSQL) ja andmebaasi projekteerimise lĂ€henemisviid (andmemudeli loomine SQL-is versus pĂ€ringute modelleerimine NoSQL-is).
Jaotatud transaktsioonilise andmebaasiga, nagu YugaByte DB, on andmebaasi arhitektuuri arutelud kergesti hajutatavad. Andmehulkade suurenedes, mida ei saa ĂŒhte sĂ”lme salvestada, muutub tĂ€ielikult jaotatud arhitektuur, mis toetab lineaarset kirjutamise skaleeritavust automaatse ĆĄarding- ja ĂŒmberjaotusega, vajalikuks.
Lisaks sellele, nagu ĂŒhes artiklis on öeldud , transaktsioonilised, rangelt kooskĂ”lastatud arhitektuurid on nĂŒĂŒd laiemalt rakendatud, et tagada parem paindlikkus arenduses kui mitte transaktsioonilised, lĂ”plikult kooskĂ”lastatud arhitektuurid.
Tagasi andmebaaside kavandamise arutelu juurde on Ă”iglane öelda, et mĂ”lemad kavandamise lĂ€henemisviisid (SQL ja NoSQL) on vajalikud igasuguste keerukate reaalsete rakenduste jaoks. SQL lĂ€henemisviis 'andmemudelimine' vĂ”imaldab arendajatel kergemini rahuldada muutuvaid Ă€rivajadusi, samas kui NoSQL lĂ€henemisviis 'pĂ€ringute modelleerimine' vĂ”imaldab neil samadel arendajatel hallata suuri andmemahtusid, omades samal ajal madalat latentsus aega ja suurt lĂ€bilaskevĂ”imet. Just sellepĂ€rast pakub YugaByte DB SQL ja NoSQL API-d ĂŒhiselt, mitte ei propageeri mĂ”nda ĂŒhte lĂ€henemist. Lisaks tagades ĂŒhilduvuse populaarsete andmebaasikeeltega, sealhulgas PostgreSQL ja Cassandra, garanteerib YugaByte DB, et arendajatel ei pea olema veel ĂŒht keelt, et töötada jaotatud rangelt kooskĂ”lastatud andmebaasi tuumaga.
Selles artiklis uurisime, kuidas andmebaaside kavandamise alused erinevad PostgreSQL, Cassandra ja MongoDB vahel. JĂ€rgnevates artiklites sukeldume edasijĂ”udnud kavandamise kontseptsioonidesse, nagu indeksid, tehingud, JOINâid, TTL direktiivid ja JSON-dokumendid.
Soovime teile meeldivalt kulgeda ĂŒlejÀÀnud nĂ€dalavahetus ja kutsume teid , mis toimub juba 14. mail.
Allikas: habr.com
