Izisekelo Zokuklama Isizindalwazi - Ukuqhathanisa i-PostgreSQL, i-Cassandra, ne-MongoDB

Sawubona, bangane. Ngaphambi kokuthi siye engxenyeni yesibili yamaholide kaMeyi, sabelana nawe ngezinto esizihumushe silindele ukwethulwa kokusakaza okusha esifundweni. "I-DBMS yobudlelwano".

Izisekelo Zokuklama Isizindalwazi - Ukuqhathanisa i-PostgreSQL, i-Cassandra, ne-MongoDB

Abathuthukisi bohlelo lokusebenza bachitha isikhathi esiningi beqhathanisa imininingwane eminingi yokusebenza ukuze bakhethe leyo ewufanele kangcono umsebenzi ohlosiwe. Izidingo zingabandakanya ukwenziwa kwedatha okulula, iziqinisekiso zokwenziwayo, ukusebenza kokufunda/ukubhala, ukukala okuvundlile, nokubekezelela amaphutha. Ngokwesiko, ukukhetha kuqala ngesigaba sesizindalwazi, i-SQL noma i-NoSQL, njengoba isigaba ngasinye siveza isethi ecacile yokuhwebelana. Ukusebenza okuphezulu mayelana nokubambezeleka okuphansi kanye nokuphuma okuphezulu ngokuvamile kubonakala njengemfuneko engeyona yokuhweba ngakho-ke kubalulekile kunoma iyiphi isampula yolwazi.

Injongo yalesi sihloko ukusiza abathuthukisi bohlelo lokusebenza ukuthi benze ukukhetha okufanele phakathi kwe-SQL ne-NoSQL kumongo wokumodela idatha yohlelo lokusebenza. Sizobheka i-database eyodwa ye-SQL, okuyi-PostgreSQL, kanye nemininingwane yolwazi emibili ye-NoSQL, i-Cassandra ne-MongoDB, ukuze sihlanganise izisekelo zokuklanywa kwedathabhesi, njengokwakha amatafula, ukuwagcwalisa, ukufunda idatha etafuleni, nokuyisusa. Esihlokweni esilandelayo, sizoqiniseka ukuthi sibheka izinkomba, okwenziwayo, JOIN, iziqondiso ze-TTL, kanye nesakhiwo sesizindalwazi esisekelwe ku-JSON.

Uyini umehluko phakathi kwe-SQL ne-NoSQL?

Imininingo egciniwe ye-SQL ikhuphula ukuguquguquka kwesicelo ngeziqinisekiso zokwenziwa ze-ACID, kanye nekhono lazo lokubuza idatha kusetshenziswa ama-JOIN ngezindlela ezingalindelekile phezu kwamamodeli akhona ajwayelekile esizindalwazi sobudlelwano.

Njengoba kunikezwe ukwakheka kwe-monolithic/single-node kanye nokusetshenziswa kwemodeli yokuphindaphinda kwesigqila esiyinhloko sokuphindaphinda, imininingwane yolwazi ye-SQL yendabuko ayinazo izici ezimbili ezibalulekile - ukukala komugqa wokubhala (okungukuthi ukwahlukanisa okuzenzakalelayo kuwo wonke ama-node amaningi) kanye nokulahleka kwedatha okuzenzakalelayo/eziro. Lokhu kusho ukuthi inani ledatha elitholiwe alikwazi ukudlula umkhawulo wokubhala okuphumayo kwenodi eyodwa. Ukwengeza, okunye ukulahleka kwedatha yesikhashana kufanele kucatshangelwe ekubekezeleleni amaphutha (esakhiweni esingahlanganyelwa lutho). Lapha udinga ukukhumbula ukuthi izibophezelo zakamuva azikakaboniswa ekhophi yesigqila. Ukubuyekezwa okungezona isikhathi sokuphumula kunzima futhi ukufeza kusizindalwazi se-SQL.

Imininingwane ye-NoSQL ivamise ukusatshalaliswa ngokwemvelo, i.e. kuzo, idatha ihlukaniswe yaba izigaba futhi isatshalaliswa ezindaweni eziningana. Badinga i-denormalization. Lokhu kusho ukuthi idatha efakiwe kufanele futhi ikopishwe izikhathi ezimbalwa ukuphendula izicelo ezithile ozithumelayo. Umgomo jikelele uwukuthola ukusebenza okuphezulu ngokunciphisa inani lamashadi atholakalayo ngesikhathi sokufundwa. Lokhu kusho ukuthi i-NoSQL idinga ukuthi wenze imodeli yemibuzo yakho, kuyilapho i-SQL idinga ukuthi wenze imodeli yedatha yakho.

I-NoSQL igxile ekuzuzeni ukusebenza okuphezulu kuqoqo elisabalalisiwe futhi lokhu kuyisizathu esiyisisekelo sokuhwebelana okuningi kwedizayini yesizindalwazi esihlanganisa ukulahleka kokwenziwe kwe-ACID, JOIN, kanye nezinkomba zesibili zomhlaba ezingaguquki.

Kukhona impikiswano yokuthi ngenkathi isizindalwazi se-NoSQL sinikeza ukukala kokubhala okuqondile kanye nokubekezelela amaphutha aphezulu, ukulahleka kweziqinisekiso zokuthengiselana kubenza bangafaneleki idatha ebaluleke kakhulu kumgomo.

Ithebula elilandelayo libonisa ukuthi ukumodelwa kwedatha ku-NoSQL kwehluka kanjani kune-SQL.

Izisekelo Zokuklama Isizindalwazi - Ukuqhathanisa i-PostgreSQL, i-Cassandra, ne-MongoDB

I-SQL ne-NoSQL: Kungani zombili zidingeka?

Izinhlelo zokusebenza zomhlaba wangempela ezinamanani amakhulu abasebenzisi, njenge-Amazon.com, Netflix, Uber, ne-Airbnb, zinikezwe umsebenzi wokwenza imisebenzi eyinkimbinkimbi, enezici eziningi. Isibonelo, uhlelo lokusebenza lwe-e-commerce olufana ne-Amazon.com ludinga ukugcina idatha engasindi, ebaluleke kakhulu njengolwazi lomsebenzisi, imikhiqizo, ama-oda, ama-invoyisi, kanye nedatha esindayo, ebucayi kancane njengezibuyekezo zomkhiqizo, imilayezo yosekelo , umsebenzi womsebenzisi, ukubuyekezwa komsebenzisi nezincomo. Ngokwemvelo, lezi zinhlelo zokusebenza zincike okungenani kusizindalwazi esisodwa se-SQL kanye nesizindalwazi okungenani esisodwa se-NoSQL. Ezinhlelweni ezinqamula izifunda kanye nezomhlaba jikelele, isizindalwazi se-NoSQL sisebenza njengenqolobane esabalaliswe yi-geo yedatha egcinwe kusizindalwazi somthombo othembekile we-SQL esebenza endaweni ethile.

I-YugaByte DB iyihlanganisa kanjani i-SQL ne-NoSQL?

Yakhelwe phezu kwenjini yokugcina okuxubile egxile kulogi, ukwahlukanisa ngokuzenzakalela, ukuphindaphinda kwesivumelwano esabiwe ekwabiweni kanye nokusatshalaliswa kwe-ACID (okugqugquzelwe yi-Google Spanner), i-YugaByte DB iyisizindalwazi sokuqala somthombo ovulekile emhlabeni esihambisana kanyekanye ne-NoSQL (Cassandra & Redis ) futhi I-SQL (i-PostgreSQL). Njengoba kukhonjisiwe kuthebula elingezansi, i-YCQL, i-YugaByte DB API ehambisana ne-Cassandra, yengeza imiqondo yokuthengiselana okukodwa nokhiye abaningi be-ACID kanye nezinkomba zesibili zomhlaba ku-NoSQL API, ngaleyo ndlela ingenise inkathi yolwazi lwe-NoSQL yokwenziwayo. Ukwengeza, i-YCQL, i-YugaByte DB API ehambisana ne-PostgreSQL, yengeza imiqondo yokukala kokubhala okuqondile kanye nokubekezelela amaphutha okuzenzakalelayo ku-SQL API, okuletha imininingo egciniwe ye-SQL esabalalisiwe emhlabeni. Ngenxa yokuthi i-YugaByte DB iyathengiselana ngokwemvelo, i-NoSQL API manje ingasetshenziswa kumongo wedatha ebalulekile yenjongo.

Izisekelo Zokuklama Isizindalwazi - Ukuqhathanisa i-PostgreSQL, i-Cassandra, ne-MongoDB

Njengoba kushiwo ngaphambili esihlokweni "Sethula i-YSQL: I-PostgreSQL Compatible Distributed SQL API ye-YugaByte DB", ukukhetha phakathi kwe-SQL noma i-NoSQL ku-YugaByte DB kuncike ngokuphelele ezicini zomthwalo womsebenzi oyisisekelo:

  • Uma umsebenzi wakho oyinhloko kuwumisebenzi ye-JOIN enokhiye abaningi, lapho-ke ukhetha i-YSQL, qonda ukuthi okhiye bakho bangase basakazwe ezindaweni eziningi, okuholela ekubenimbezeleka okuphezulu kanye/noma okuphansi kokuphuma kwe-NoSQL.
  • Uma kungenjalo, khetha noma yimaphi ama-NoSQL APIs amabili, ukhumbula ukuthi uzothola ukusebenza okungcono kakhulu ngenxa yemibuzo ehanjiswa endaweni eyodwa ngesikhathi. I-YugaByte DB ingasebenza njengesizindalwazi esisodwa sokusebenza somhlaba wangempela, izinhlelo zokusebenza eziyinkimbinkimbi ezidinga ukuphatha imisebenzi eminingi ngesikhathi esisodwa.

Ilebhu yokufanisa idatha esigabeni esilandelayo isekelwe kuzigcinilwazi ze-PostgreSQL ne-Cassandra API ehambisanayo ye-YugaByte DB, ngokuphambene nesizindalwazi somdabu. Le ndlela igcizelela ukukhululeka kokuxhumana nama-API amabili ahlukene (emachwebeni amabili ahlukene) weqoqo elifanayo lesizindalwazi, ngokuphambene nokusebenzisa amaqoqo azimele ngokuphelele emininingwane emibili ehlukene.
Ezigabeni ezilandelayo, sizobheka ilebhu yemodeli yedatha ukuze sibonise umehluko nokunye okufana kolwazi oluhlanganisiwe.

Ilabhorethri Yokulingisa Idatha

Ukufakwa kwesizindalwazi

Uma kubhekwa ukugcizelela ekwakhiweni kwemodeli yedatha (esikhundleni sezakhiwo eziyinkimbinkimbi zokuthunyelwa), sizofaka imininingwane yolwazi eziqukathi ze-Docker emshinini wendawo bese sisebenzisana nawo sisebenzisa amagobolondo awo omugqa womyalo ngokulandelana kwawo.

I-PostgreSQL ne-Cassandra ehambisanayo ye-YugaByte DB database

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_postgres

I-MongoDB

docker run --name my-mongo -d mongo:latest

Ukufinyelela komugqa womyalo

Masixhume kusizindalwazi sisebenzisa igobolondo lomugqa womyalo kuma-API ahambisanayo.

I-PostgreSQL

psql iyigobolondo lomugqa womyalo wokusebenzelana ne-PostgreSQL. Ukuze kube lula ukuyisebenzisa, i-YugaByte DB iza ne-psql khona kanye kufolda yomgqomo.

docker exec -it yb-postgres-n1 /home/yugabyte/postgres/bin/psql -p 5433 -U postgres

Cassandra

cqlsh iyigobolondo lomugqa womyalo wokusebenzelana ne-Cassandra kanye nemininingwane yayo yolwazi ehambisanayo nge-CQL (Cassandra Query Language). Ukuze kube lula ukuyisebenzisa, i-YugaByte DB iza nayo cqlsh kukhathalogi bin.
Qaphela ukuthi i-CQL igqugquzelwe i-SQL futhi inemiqondo efanayo yamathebula, imigqa, amakholomu nezinkomba. Kodwa-ke, njengolimi lwe-NoSQL, lwengeza isethi ethile yemikhawulo, iningi layo esizolifaka kwezinye izindatshana.

docker exec -it yb-tserver-n1 /home/yugabyte/bin/cqlsh

I-MongoDB

Mongo iyigobolondo lomugqa womyalo wokuxhumana ne-MongoDB. Ingatholakala kumkhombandlela womgqomo wokufakwa kwe-MongoDB.

docker exec -it my-mongo bash 
cd bin
mongo

Ukwakha itafula

Manje singakwazi ukusebenzisana ne-database ukwenza imisebenzi ehlukahlukene sisebenzisa umugqa womyalo. Ake siqale ngokwakha ithebula eligcina ulwazi ngezingoma ezibhalwe ngabaculi abahlukene. Lezi zingoma zingase zibe yingxenye ye-albhamu. Futhi izici ozikhethela zengoma unyaka wokukhishwa, intengo, uhlobo kanye nesilinganiso. Kudingeka siphendule ngezibaluli ezengeziwe ezingase zidingeke esikhathini esizayo ngenkambu ethi "omaka". Ingagcina idatha enesakhiwo esincane ngendlela yamapheya enani elingukhiye.

I-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

Ukudala itafula eCassandra kufana kakhulu ne-PostgreSQL. Omunye umehluko omkhulu ukushoda kwezingqinamba zobuqotho (isb. HHAYI NULL), kodwa lona umthwalo wemfanelo wohlelo lokusebenza, hhayi isizindalwazi se-NoSQL. Ukhiye oyinhloko uqukethe ukhiye wokuhlukanisa (ikholomu Yeciko esibonelweni esingezansi) kanye nesethi yamakholomu ahlanganisayo (ikholomu ye-SongTitle kusibonelo esingezansi). Ukhiye wokuhlukanisa unquma ukuthi iyiphi i-partition/shadi umugqa okufanele ubekwe kukho, futhi amakholomu okuhlanganisa abonisa ukuthi idatha kufanele ihlelwe kanjani ngaphakathi kweshadi yamanje.

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)
);

I-MongoDB

I-MongoDB ihlela idatha ibe yisizindalwazi (Idathabhesi) (efana ne-Keyspace ku-Cassandra), lapho kukhona Amaqoqo (afana namathebula) aqukethe Amadokhumenti (afana nemigqa kuthebula). Ku-MongoDB, asikho isidingo sokuchaza i-schema yokuqala. Ithimba "sebenzisa database", eboniswe ngezansi, iqinisekisa isizindalwazi ocingweni lokuqala futhi ishintsha umongo wesizindalwazi esisanda kwakhiwa. Ngisho namaqoqo akudingeki adalwe ngokucacile; adalwa ngokuzenzekelayo, uma nje wengeza idokhumenti yokuqala eqoqweni elisha. Qaphela ukuthi i-MongoDB isebenzisa isizindalwazi sokuhlola ngokuzenzakalelayo, ngakho-ke noma yikuphi ukusebenza kwezinga lokuqoqwa ngaphandle kokucacisa isizindalwazi esithile kuzosebenza kuso ngokuzenzakalelayo.

use myNewDatabase;

Ithola ulwazi mayelana netafula
I-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

DESCRIBE TABLE 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'};

I-MongoDB

use myNewDatabase;
show collections;

Ifaka idatha kuthebula
I-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

Isisho sesisonke INSERT eCassandra ibukeka ifana kakhulu naleyo eku-PostgreSQL. Nokho, kunomehluko owodwa omkhulu kuma-semantics. ECassandra INSERT empeleni kuwukuhlinzwa UPSERT, lapho amanani okugcina engezwa kumugqa uma umugqa usuvele ukhona.

Ukufakwa kwedatha kufana ne-PostgreSQL INSERT ephakeme

.

I-MongoDB

Noma i-MongoDB iyisizindalwazi se-NoSQL njenge-Cassandra, ukusebenza kwayo kokufaka akuhlangene ngalutho nokuziphatha kwe-semantic ye-Cassandra. Ku-MongoDB faka () akanawo amathuba UPSERT, okwenza ifane ne-PostgreSQL. Ukwengeza idatha ezenzakalelayo ngaphandle _idspecified kuzobangela ukuthi idokhumenti entsha yengezwe eqoqweni.

db.music.insert( {
artist: "No One You Know",
songTitle: "Call Me Today",
albumTitle: "Somewhat Famous",
year: 2015,
price: 2.14,
genre: "Country",
tags: {
Composers: ["Smith", "Jones", "Davis"],
LengthInSeconds: 214
}
}
);
db.music.insert( {
artist: "No One You Know",
songTitle: "My Dog Spot",
albumTitle: "Hey Now",
price: 1.98,
genre: "Country",
criticRating: 8.4
}
);
db.music.insert( {
artist: "The Acme Band",
songTitle: "Look Out, World",
albumTitle:"The Buck Starts Here",
price: 0.99,
genre: "Rock"
}
);
db.music.insert( {
artist: "The Acme Band",
songTitle: "Still In Love",
albumTitle:"The Buck Starts Here",
price: 2.47,
genre: "Rock",
tags: {
radioStationsPlaying:["KHCR", "KBQX", "WTNR", "WJJH"],
tourDates: {
Seattle: "20150625",
Cleveland: "20150630"
},
rotation: "Heavy"
}
}
);

Umbuzo Wethebula

Mhlawumbe umehluko obaluleke kakhulu phakathi kwe-SQL ne-NoSQL mayelana nokwakhiwa kwemibuzo ulimi olusetshenziswayo FROM и WHERE. I-SQL ivumela ngemuva kwenkulumo FROM khetha amathebula amaningi, kanye nenkulumo nge WHERE ingaba yinoma iyiphi inkimbinkimbi (kuhlanganise nokusebenza JOIN phakathi kwamatafula). Kodwa-ke, i-NoSQL ijwayele ukubeka umkhawulo onzima FROM, futhi usebenze kuphela ngethebula elilodwa elishiwo, futhi ngaphakathi WHERE, ukhiye oyinhloko kufanele uhlale ucacisiwe. Lokhu kuhlotshaniswa nokucindezela kokusebenza kwe-NoSQL esikhulume ngakho ngaphambili. Lesi sifiso siholela kukho konke ukuncipha okungenzeka kunoma yikuphi ukusebenzisana kwe-cross-tabular kanye nokhiye onqamulayo. Ingathula ukubambezeleka okukhulu ekuxoxisaneni phakathi kwamanodi lapho iphendula isicelo ngakho-ke kungcono kakhulu igweme ngokujwayelekile. Isibonelo, i-Cassandra idinga ukuthi imibuzo ikhawulelwe kuma-opharetha athile (kuphela =, IN, <, >, =>, <=) kokhiye bokuhlukanisa, ngaphandle kwalapho ucela inkomba yesibili (u-opharetha = kuphela ovunyelwe lapha).

I-PostgreSQL

Ngezansi kunezibonelo ezintathu zemibuzo engenziwa kalula yisizindalwazi se-SQL.

  • Khombisa zonke izingoma zomculi;
  • Bonisa wonke amaculo eciko afana nengxenye yokuqala yesihloko;
  • Bonisa wonke amaculo omculi anegama elithile esihlokweni futhi anenani elingaphansi kuka-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

Emibuzweni ye-PostgreSQL ebalwe ngenhla, eyokuqala kuphela ezosebenza ingashintshiwe e-Cassandra, njengoba opharetha LIKE ayikwazi ukusetshenziswa kumakholomu okuhlanganisa njengalokhu SongTitle. Kulokhu, opharetha kuphela abavunyelwe = и 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;

I-MongoDB

Njengoba kukhonjisiwe ezibonelweni ezedlule, indlela eyinhloko yokudala imibuzo ku-MongoDB ingu db.collection.find(). Le ndlela iqukethe ngokusobala igama leqoqo (music esibonelweni esingezansi), ngakho-ke ukubuza amaqoqo amaningi akuvunyelwe.

db.music.find( {
  artist: "No One You Know"
 } 
);
db.music.find( {
  artist: "No One You Know",
  songTitle: /Call/
 } 
);

Ukufunda yonke imigqa yethebula

Ukufunda yonke imigqa kumane kuyisimo esikhethekile sephethini yombuzo esiyibuke ekuqaleni.

I-PostgreSQL

SELECT * 
FROM Music;

Cassandra

Ngokufanayo nesibonelo se-PostgreSQL esingenhla.

I-MongoDB

db.music.find( {} );

Ukuhlela idatha kuthebula

I-PostgreSQL

I-PostgreSQL inikeza imiyalelo UPDATE ukushintsha idatha. Akanawo amathuba UPSERT, ngakho lesi sitatimende sizohluleka uma umugqa ungasekho kusizindalwazi.

UPDATE Music
SET Genre = 'Disco'
WHERE Artist = 'The Acme Band' AND SongTitle = 'Still In Love';

Cassandra

UCassandra unalo UPDATE ifana ne-PostgreSQL. UPDATE inama-semantics afanayo UPSERT, ezifanayo INSERT.

Ngokufanayo nesibonelo se-PostgreSQL esingenhla.

I-MongoDB
Ukusebenza buyekeza () ku-MongoDB ingabuyekeza ngokuphelele idokhumenti ekhona noma ibuyekeze izinkambu ezithile kuphela. Ngokuzenzakalelayo, ibuyekeza idokhumenti eyodwa kuphela nge-semantics evaliwe UPSERT. Ibuyekeza amadokhumenti amaningi nokuziphatha okufanayo UPSERT ingasetshenziswa ngokusetha amafulegi engeziwe omsebenzi. Isibonelo, esibonelweni esingezansi, uhlobo lomculi othile lubuyekezwa ngokusekelwe engomeni yakhe.

db.music.update(
  {"artist": "The Acme Band"},
  { 
    $set: {
      "genre": "Disco"
    }
  },
  {"multi": true, "upsert": true}
);

Ikhipha idatha kuthebula

I-PostgreSQL

DELETE FROM Music
WHERE Artist = 'The Acme Band' AND SongTitle = 'Look Out, World';

Cassandra

Ngokufanayo nesibonelo se-PostgreSQL esingenhla.

I-MongoDB

I-MongoDB inezinhlobo ezimbili zokusebenza zokususa amadokhumenti − deleteOne() /deleteMany() и susa (). Zombili izinhlobo zisusa amadokhumenti kodwa zibuyisela imiphumela ehlukile.

db.music.deleteMany( {
        artist: "The Acme Band"
    }
);

Isusa itafula

I-PostgreSQL

DROP TABLE Music;

Cassandra

Ngokufanayo nesibonelo se-PostgreSQL esingenhla.

I-MongoDB

db.music.drop();

isiphetho

Inkulumompikiswano mayelana nokukhetha phakathi kwe-SQL ne-NoSQL isineminyaka engaphezu kwe-10 ishubile. Kunezici ezimbili eziyinhloko kule mpikiswano: ukwakhiwa kwenjini yedatha (i-monolithic, i-SQL yohwebo uma iqhathaniswa nokusabalalisa, i-NoSQL engashintshisani) kanye nendlela yokuklama isizindalwazi (ukumodela idatha yakho ku-SQL uma uqhathanisa nokumodela imibuzo yakho ku-NoSQL).

Ngolwazi olugciniwe olusabalalisiwe olufana ne-YugaByte DB, impikiswano mayelana nokwakhiwa kwesizindalwazi ingamiswa kalula. Njengoba amavolumu edatha eba makhulu kunalokho okungabhalwa endaweni eyodwa, ukwakheka okusatshalaliswe ngokugcwele okusekela ukulinganisa kokubhala ngomugqa ngokushaja okuzenzakalelayo/ukulinganisa kabusha kuba kudingekile.

Ngaphandle kwalokho, njengoba kushiwo kwesinye sezindatshana Ifu le-Google,Izakhiwo, izakhiwo ezingaguquguquki ngokuqinile manje seziningi, zisetshenziselwa ukuhlinzeka ngobuchule bokuthuthukiswa obungcono kunezakhiwo ezingezona ezohwebo, , ekugcineni ezingaguquki.

Uma sibuyela engxoxweni yokuklama isizindalwazi, kulungile ukusho ukuthi zombili izindlela zokuklama (i-SQL ne-NoSQL) ziyadingeka kunoma yiluphi uhlelo lokusebenza lomhlaba wangempela oluyinkimbinkimbi. Indlela ye-SQL "yemodeli yedatha" ivumela abathuthukisi ukuthi bahlangabezane kalula nezimfuneko zebhizinisi ezishintshayo, kuyilapho indlela ye-NoSQL "yemodeli yombuzo" ivumela abathuthukisi abafanayo ukuthi basebenze ngevolumu enkulu yedatha ngokubambezeleka okuphansi kanye nokuphuma okuphezulu. Kungalesi sizathu i-YugaByte DB ihlinzeka nge-SQL kanye ne-NoSQL APIs kumongo ofanayo, kunokuba ikhuthaze enye yezindlela. Ukwengeza, ngokunikeza ukuhambisana nezilimi zesizindalwazi ezidumile ezihlanganisa i-PostgreSQL ne-Cassandra, i-YugaByte DB iqinisekisa ukuthi abathuthukisi akudingeki bafunde olunye ulimi ukuze basebenze nenjini yesizindalwazi esabalalisiwe, engaguquguquki kakhulu.

Kulesi sihloko, sibheke ukuthi izisekelo zokuklanywa kwedatha yedatha zihluka kanjani phakathi kwe-PostgreSQL, i-Cassandra, ne-MongoDB. Kuma-athikili azayo, sizongena emicabangweni yedizayini ethuthukisiwe njengezinkomba, okwenziwayo, ama-JOIN, iziqondiso ze-TTL, namadokhumenti e-JSON.

Sikufisela ukuphumula okuhle kwempelasonto futhi sikumema i-webinar yamahhala, ezokwenzeka ngoMeyi 14.

Source: www.habr.com

Engeza amazwana