Isiseko soyilo lweDatha-Ukuthelekisa iPostgreSQL, iCassandra kunye neMongoDB

Molweni, bahlobo. Ngaphambi kokuba siye kwinxalenye yesibini yeeholide zikaMeyi, sabelana nawe ngezinto esiziguqulele ngokulindela ukuqaliswa komlambo omtsha kwikhosi. "I-DBMS yobudlelwane".

Isiseko soyilo lweDatha-Ukuthelekisa iPostgreSQL, iCassandra kunye neMongoDB

Abaphuhlisi bezicelo bachitha ixesha elininzi bethelekisa oovimba beenkcukacha abaninzi bokusebenza ukuze bakhethe eyona iwufaneleyo umsebenzi ocetywayo. Iimfuno zinokubandakanya ukwenziwa kwedatha eyenziwe lula, iziqinisekiso zentengiselwano, ukufunda/ukubhala ukusebenza, ukulinganisa okuthe tye, kunye nokunyamezela iimpazamo. Ngokwesiko, ukhetho luqala ngoluhlu lwedatha, i-SQL okanye i-NoSQL, ekubeni icandelo ngalinye libonisa isethi ecacileyo yorhwebo. Ukusebenza okuphezulu ngokubhekiselele kwi-latency ephantsi kunye ne-throughput ephezulu ngokuqhelekileyo ibonwa njengemfuneko engeyiyo yorhwebo kwaye ngoko ke kubalulekile kuyo nayiphi na isampula yedatha.

Injongo yeli nqaku kukunceda abaphuhlisi besicelo benze ukhetho olufanelekileyo phakathi kwe-SQL kunye ne-NoSQL kumxholo wedatha yesicelo. Siza kujonga i-database ye-SQL enye, i-PostgreSQL, kunye ne-database ye-NoSQL emibini, i-Cassandra kunye ne-MongoDB, ukugubungela iziseko zoyilo lwesiseko sedatha, njengokwenza iitafile, ukuzifaka, ukufunda idatha kwitafile, kunye nokucima. Kwinqaku elilandelayo, siya kuqiniseka ukuba sijonga izalathisi, intengiselwano, iJOIN, imiyalelo ye-TTL, kunye noyilo lwedatha esekwe kwi-JSON.

Yintoni umahluko phakathi kwe-SQL kunye ne-NoSQL?

Oovimba beenkcukacha ze-SQL bandisa ukuguquguquka kwesicelo ngokusebenzisa iziqinisekiso zentengiselwano ze-ACID, kunye nokukwazi kwabo ukubuza idatha besebenzisa i-JOIN ngeendlela ezingalindelekanga phezu kwemifuziselo ekhoyo yobudlelwane obuqhelekileyo.

Ngenxa yokwakhiwa kwe-monolithic / enye-node kunye nokusetyenziswa kwemodeli yokuphindaphinda kwe-master-slave ngenxa yokuphindaphinda, i-database ye-SQL yendabuko ayinayo iimpawu ezimbini ezibalulekileyo - i-linear scalability scalability (okt. Oku kuthetha ukuba isixa sedatha efunyenweyo ayinakudlula ubuninzi bokubhala ngokubhala kwindawo enye. Ukongezelela, enye ilahleko yedatha yesikhashana kufuneka ithathelwe ingqalelo ekunyamezeleni impazamo (kwi-architecture ekwabelwana ngayo). Apha kufuneka ukhumbule ukuba ukuzinikela kwamva nje akukabonakali kwikopi yekhoboka. Uhlaziyo olungelulo ixesha lokuphumla kwakhona kunzima ukufezekisa kuluhlu lwedatha yeSQL.

I-database ye-NoSQL idla ngokusasazwa ngokwendalo, okt. kuzo, idatha ihlulwe yangamacandelo kwaye isasazwe kwiindawo ezininzi. Bafuna i-denormalization. Oku kuthetha ukuba idatha efakiweyo kufuneka ikhutshelwe amaxesha amaninzi ukuphendula izicelo ezithile ozithumelayo. Injongo iyonke kukufumana ukusebenza okuphezulu ngokunciphisa inani leeshadi ezikhoyo ngexesha lokufunda. Oku kuthetha ukuba i-NoSQL ifuna ukuba wenze imodeli yemibuzo yakho, ngelixa i-SQL ifuna ukuba wenze imodeli yedatha yakho.

I-NoSQL igxininise ekufezekiseni ukusebenza okuphezulu kwi-cluster esasazwayo kwaye oku kusisiseko sesiseko se-tradeoffs yoyilo lwesiseko sedatha ebandakanya ukulahleka kwentengiselwano ye-ACID, i-JOINs, kunye nezalathisi zesekondari ezihambelanayo zehlabathi.

Kukho ingxabano yokuba ngelixa ii-database ze-NoSQL zibonelela ngokubhala ngokulinganayo kunye nokunyamezela impazamo ephezulu, ukulahlekelwa kweziqinisekiso zentengiselwano kubenza bangafaneleki kwidatha ebalulekileyo ye-mission.

Itheyibhile ilandelayo ibonisa indlela imodeli yedatha kwi-NoSQL eyahluke ngayo kwi-SQL.

Isiseko soyilo lweDatha-Ukuthelekisa iPostgreSQL, iCassandra kunye neMongoDB

I-SQL kunye ne-NoSQL: Kutheni zombini zifuneka?

Usetyenziso lwehlabathi lokwenyani olunamanani amakhulu abasebenzisi, abanje ngeAmazon.com, Netflix, Uber, kunye ne-Airbnb, banikwe umsebenzi wokwenza imisebenzi entsonkothileyo, enemacala amaninzi. Ngokomzekelo, isicelo se-e-commerce esifana ne-Amazon.com idinga ukugcina i-lightweight, idatha ebaluleke kakhulu njengolwazi lomsebenzisi, iimveliso, ii-odolo, ii-invoyisi, kunye nedatha enzima, engaphantsi kwedatha efana nokuphononongwa kwemveliso, imiyalezo yenkxaso, umsebenzi wabasebenzisi, uphononongo lwabasebenzisi kunye neengcebiso. Ngokwemvelo, ezi zicelo zixhomekeke ubuncinane kwisiseko sedatha enye ye-SQL kunye nedatha ye-NoSQL enye. Kwiinkqubo ezinqamlezayo kunye nehlabathi jikelele, i-database ye-NoSQL isebenza njenge-geo-distributed cache yedatha egcinwe kumthombo othembekileyo wedatha ye-SQL esebenza kwindawo enye.

I-YugaByte DB idibanisa njani iSQL kunye neNoSQL?

Yakhelwe kwi-log-oriented kwi-injini yokugcina edibeneyo, i-auto-sharding, i-sharded i-replication yemvumelwano esasaziweyo kunye ne-ACID yokuhanjiswa kwentengiselwano (iphefumlelwe yi-Google Spanner), i-YugaByte DB yindawo yokuqala yomthombo wedatha evulekileyo yehlabathi ehambelana ngaxeshanye ne-NoSQL (Cassandra & Redis ) kunye I-SQL (i-PostgreSQL). Njengoko kubonisiwe kwitheyibhile engezantsi, i-YCQL, i-YugaByte DB API ehambelana neCassandra, yongeza iikhonsepthi zokuthengiselana okukodwa kunye nezitshixo ezininzi ze-ACID kunye nezalathisi eziziisekondari zehlabathi kwi-NoSQL API, ngaloo ndlela ingenisa ixesha leenkcukacha zedatha ze-NoSQL. Ukongezelela, i-YCQL, i-YugaByte DB API ehambelana ne-PostgreSQL, yongeza iikhonsepthi zokulinganisa umgca wokubhala kunye nokunyamezela impazamo ngokuzenzekelayo kwi-SQL API, ukuzisa i-database ye-SQL esasazwayo kwihlabathi. Ngenxa yokuba i-YugaByte DB iyintengiselwano kwindalo, i-NoSQL API ngoku ingasetyenziswa kumxholo wedatha ebalulekileyo ye-mission.

Isiseko soyilo lweDatha-Ukuthelekisa iPostgreSQL, iCassandra kunye neMongoDB

Njengoko bekutshiwo ngaphambili kwinqaku "Ukwazisa i-YSQL: I-PostgreSQL ehambelana ne-SQL API yeYugaByte DB", ukhetho phakathi kweSQL okanye iNoSQL kwiYugaByte DB ixhomekeke ngokupheleleyo kwiimpawu zomthwalo ongaphantsi:

  • Ukuba umsebenzi wakho oyintloko yimisebenzi emininzi ye-JOIN, ngoko xa ukhetha i-YSQL, qonda ukuba izitshixo zakho zinokusasazwa kwiindawo ezininzi, okukhokelela kwi-latency ephezulu kunye / okanye i-output ephantsi kune-NoSQL.
  • Ngaphandle koko, khetha enye yee-API ezimbini ze-NoSQL, ugcine engqondweni ukuba uya kufumana ukusebenza okungcono ngenxa yemibuzo ehanjiswa kwi-node enye ngexesha. I-YugaByte DB inokusebenza njengendawo yogcino-lwazi olusebenzayo lwehlabathi lokwenyani, izicelo ezintsonkothileyo ezifuna ukulawula imisebenzi emininzi ngaxeshanye.

Ilebhu yemodeli yeDatha kwicandelo elilandelayo isekelwe kwi-PostgreSQL kunye ne-Cassandra API ehambelanayo yogcino lwedatha ye-YugaByte DB, ngokuchasene nedatha yendalo. Le ndlela igxininisa ukukhululeka kokusebenzisana kunye nee-API ezimbini ezahlukeneyo (kwiizibuko ezimbini ezihlukeneyo) zeqela ledatha efanayo, ngokuchasene nokusebenzisa amaqela azimeleyo azimeleyo eedatha ezimbini ezahlukeneyo.
Kula macandelo alandelayo, siza kujonga kwilebhu yomfuziselo wedatha ukubonisa iyantlukwano kunye nezinye izinto eziqhelekileyo zogcino-lwazi olugqunyiweyo.

ILabhoratri yoMfanekiso weDatha

Ufakelo lweDatabase

Ukunika ugxininiso kuyilo lwemodeli yedatha (endaweni yoyilo oluntsonkothileyo losasazo), siya kufaka ugcino-lwazi kwizikhongozeli zeDocker kumatshini wasekhaya kwaye emva koko sinxibelelane nazo sisebenzisa oonokrwece belayini yomyalelo.

I-PostgreSQL kunye neCassandra ehambelanayo yeYugaByte 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

MongoDB

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

Ufikelelo kumgca womyalelo

Masiqhagamshele koovimba beenkcukacha sisebenzisa iqokobhe lomgca womyalelo kwii-API ezihambelanayo.

PostgreSQL

psql liqokobhe lelayini yomyalelo yokusebenzisana nePostgreSQL. Ukusebenziseka ngokulula, iYugaByte DB iza ne psql ekunene kwifolda yomgqomo.

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

Cassandra

cqlsh liqokobhe lomgca womyalelo wokunxibelelana neCassandra kunye nogcino lwedatha oluhambelanayo ngeCQL (Cassandra Query Language). Ukusebenziseka ngokulula, iYugaByte DB iza nayo cqlsh kwikhathalogu bin.
Qaphela ukuba i-CQL iphefumlelwe yi-SQL kwaye ineekhonsepthi ezifanayo zeetheyibhile, iirowu, iikholamu kunye nezalathisi. Nangona kunjalo, njengolwimi lwe-NoSQL, yongeza iseti ethile yemida, uninzi lwazo esiya kulugubungela nakwamanye amanqaku.

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

MongoDB

Mongo liqokobhe lelayini yomyalelo yokusebenzisana neMongoDB. Inokufunyanwa kuluhlu lwemigqomo lofakelo lweMongoDB.

docker exec -it my-mongo bash 
cd bin
mongo

Ukwenza itafile

Ngoku sinokusebenzisana nedathabheyisi ukwenza imisebenzi eyahlukeneyo usebenzisa umgca womyalelo. Masiqale ngokwenza itheyibhile egcina ulwazi malunga neengoma ezibhalwe ngamagcisa awohlukeneyo. Ezi ngoma zisenokuba yinxalenye yecwecwe. Kwakhona iimpawu ozikhethelayo zengoma ngunyaka wokukhululwa, ixabiso, uhlobo kunye nokukala. Kufuneka siphendule ngeempawu ezongezelelweyo ezinokufuneka kwixesha elizayo ngokusebenzisa indawo "yeethegi". Iyakwazi ukugcina idatha ye-semi-structured ngendlela ye-key-value pairs.

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

Ukwenza itafile eCassandra kufana kakhulu nePostgreSQL. Omnye umahluko ophambili kukunqongophala kwezithintelo zemfezeko (umzekelo, AKUKHO NULL), kodwa olu luxanduva lwesicelo, hayi isiseko sedatha seNoSQL.. Iqhosha eliphambili liquka isitshixo sokwahlula (ikholamu yeMculi kumzekelo ongezantsi) kunye neseti yeekholomu ezidibeneyo (ikholamu yeNgoma kumzekelo ongezantsi). Iqhosha lesahlulelo limisela ukuba yeyiphi isahlulelo / i-shard umqolo omele ubekwe kuwo, kwaye iikholamu ze-clustering zibonisa ukuba idatha kufuneka ihlelwe njani ngaphakathi kwe-shard yangoku.

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

I-MongoDB iququzelela idatha kwi-database (iDatabase) (efana ne-Keyspace e-Cassandra), apho kukho iiNgqokelela (ezifana neetafile) eziqulethe amaxwebhu (afana nemigca kwitafile). KwiMongoDB, akukho mfuneko yokuchaza ischema sokuqala. Iqela "sebenzisa i-database", eboniswe ngezantsi, iqinisekisa isiseko sedatha kwifowuni yokuqala kwaye itshintsha umxholo wesiseko sedatha esitsha. Nkqu ingqokelela ayifuni ukwenziwa ngokucacileyo; yenziwa ngokuzenzekelayo, ngokulula xa usongeza uxwebhu lokuqala kwingqokelela entsha. Qaphela ukuba i-MongoDB isebenzisa i-database yovavanyo ngokungagqibekanga, ngoko ke nawuphi na umsebenzi wezinga lokuqokelela ngaphandle kokuchaza i-database ethile iya kuqhuba kuyo ngokungagqibekanga.

use myNewDatabase;

Ukufumana ulwazi malunga netafile
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'};

MongoDB

use myNewDatabase;
show collections;

Ukufaka idatha kwitafile
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

Ukubonakaliswa kukonke INSERT eCassandra ibonakala ifana kakhulu naleyo kwiPostgreSQL. Nangona kunjalo, kukho umahluko omnye omkhulu kwiisemantics. KwiCassandra INSERT luqhaqho ngenene UPSERT, apho amaxabiso okugqibela ongezwa kumqolo ukuba umqolo sele ukhona.

Ukufakwa kwedatha kuyafana nePostgreSQL INSERT ephakamileyo

.

MongoDB

Nangona i-MongoDB iyisiseko sedatha ye-NoSQL efana neCassandra, ukusebenza kwayo kokufaka akukho nto idibanisa nokuziphatha kwe-semantic yeCassandra. KwiMongoDB faka () akanamathuba UPSERT, eyenza ifane nePostgreSQL. Ukongeza idata ehlala ikho ngaphandle _idspecified izakubangela uxwebhu olutsha ukuba longezwe kwingqokelela.

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 weTheyibhile

Mhlawumbi owona mahluko ubalulekileyo phakathi kwe-SQL kunye ne-NoSQL malunga nokwakhiwa kwemibuzo lulwimi olusetyenziswayo FROM ΠΈ WHERE. I-SQL ivumela emva kokuchazwa FROM khetha iitafile ezininzi, kunye nokubonisa nge WHERE inokuba nako nakuphi na ukuntsonkotha (kubandakanya imisebenzi JOIN phakathi kweetafile). Nangona kunjalo, i-NoSQL ithande ukumisela umda oqatha FROM, kwaye usebenze kuphela ngetafile enye ekhankanyiweyo, kwaye ngaphakathi WHERE, iqhosha eliphambili kufuneka lihlale licacisiwe. Oku kunxulumana ne-NoSQL yokusebenza push ebesithetha ngayo ngaphambili. Lo mnqweno ukhokelela ekunciphiseni konke okwenzekayo kuyo nayiphi na i-cross-tabular kunye ne-cross-key interaction. Inokwazisa ukulibaziseka okukhulu kunxibelelwano lwe-inter-node xa uphendula isicelo kwaye ngoko ke kungcono ukuphepheka ngokubanzi. Umzekelo, iCassandra ifuna ukuba imibuzo ikhawulelwe kubasebenzisi abathile (kuphela =, IN, <, >, =>, <=) kumaqhosha okwahlula, ngaphandle kwaxa ucela isalathisi sesibini (kuphela = ngumqhubi ovunyelweyo apha).

PostgreSQL

Apha ngezantsi kukho imizekelo emithathu yemibuzo enokuthi iqhutywe ngokulula kwisiseko sedatha seSQL.

  • Bonisa zonke iingoma zomculi;
  • Bonisa zonke iingoma zegcisa elihambelana nenxalenye yokuqala yesihloko;
  • Bonisa zonke iingoma zegcisa elinegama elithile kwisihloko kwaye zinexabiso elingaphantsi kwe-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

Kwimibuzo yePostgreSQL edweliswe ngasentla, kuphela eyokuqala eya kusebenza ingatshintshwanga eCassandra, kuba umqhubi LIKE ayinakusetyenziswa kwiikholam ezidibanisayo ezifana SongTitle. Kule meko, kuphela abaqhubi abavunyelweyo = ΠΈ 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

Njengoko kubonisiwe kwimizekelo yangaphambili, eyona ndlela iphambili yokudala imibuzo kwiMongoDB db.collection.find(). Le ndlela iqulathe ngokucacileyo igama lengqokelela (music kumzekelo ongezantsi), ngoko ke ukubuza ingqokelela ezininzi akuvumelekanga.

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

Ukufunda yonke imiqolo yetafile

Ukufunda yonke imiqolo yinto nje ekhethekileyo yepateni yombuzo ebesiyijongile ngaphambili.

PostgreSQL

SELECT * 
FROM Music;

Cassandra

Ngokufana nomzekelo wePostgreSQL ongentla.

MongoDB

db.music.find( {} );

Ukuhlela idatha kwitheyibhile

PostgreSQL

I-PostgreSQL ibonelela ngemiyalelo UPDATE ukutshintsha idatha. Akanamathuba UPSERT, ngoko le nkcazo iya kusilela ukuba umqolo awusekho kwisiseko sedatha.

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

Cassandra

UCassandra uye UPDATE iyafana nePostgreSQL. UPDATE inesemantics efanayo UPSERT, ezifanayo INSERT.

Ngokufana nomzekelo wePostgreSQL ongentla.

MongoDB
Ukusebenza hlaziya () kwiMongoDB inokuhlaziya ngokupheleleyo uxwebhu olukhoyo okanye ihlaziye iindawo ezithile kuphela. Ngokungagqibekanga, ihlaziya kuphela uxwebhu olunye ngesemantics evaliwe UPSERT. Ukuhlaziya amaxwebhu amaninzi kunye nokuziphatha okufanayo UPSERT ingasetyenziswa ngokuseta iiflegi ezongezelelweyo zomsebenzi. Ngokomzekelo, kumzekelo ongezantsi, uhlobo lomculi othile luhlaziywa ngokusekelwe kwingoma yakhe.

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

Ukususa idatha kwitafile

PostgreSQL

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

Cassandra

Ngokufana nomzekelo wePostgreSQL ongentla.

MongoDB

I-MongoDB ineendidi ezimbini zokusebenza zokucima amaxwebhu - cimaOnye() /DeleteMany() ΠΈ susa (). Zombini ezi ndidi zicima amaxwebhu kodwa zibuyisele iziphumo ezahlukeneyo.

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

Ukucima itafile

PostgreSQL

DROP TABLE Music;

Cassandra

Ngokufana nomzekelo wePostgreSQL ongentla.

MongoDB

db.music.drop();

isiphelo

Ingxoxo-mpikiswano malunga nokukhetha phakathi kwe-SQL kunye ne-NoSQL sele iqhubeka ngaphezu kweminyaka eyi-10. Kukho imiba emibini ephambili kule ngxoxo: uyilo lwe-injini yedatha (monolithic, transactional SQL vs distributed, non-transactional NoSQL) kunye nendlela yoyilo lwesiseko sedatha (umzekelo wedatha yakho kwiSQL vs ukulinganisa imibuzo yakho kwiNoSQL).

Ngokusasazwa kwedatha yentengiselwano efana neYugaByte DB, ingxoxo malunga nokwakhiwa kwedatha inokubekwa lula. Njengoko umthamo wedatha usiba mkhulu kunokuba unokubhalwa kwindawo enye, i-architecture esasazwe ngokupheleleyo exhasa i-linear scalability scalability kunye ne-automatic sharding / rebalancing iba yimfuneko.

Ngaphandle koko, njengoko kuchaziwe kwelinye lamanqaku Ifu leGoogle,Intengiselwano, ulwakhiwo olungaguquguqukiyo ngoku luninzi, lusetyenziselwa ukubonelela ngobuchule obungcono bophuhliso kunolwakhiwo olungaguquguqukiyo, ekugqibeleni oluhambelanayo lwezakhiwo.

Ukubuyela kwingxoxo yoyilo lwesiseko sedatha, kuyafaneleka ukuthetha ukuba zombini iindlela zokuyila (SQL kunye ne-NoSQL) ziyimfuneko kuyo nayiphi na isicelo esinzima sehlabathi langempela. Indlela ye-SQL "yemodeli yedatha" ivumela abaphuhlisi ukuba bahlangabezane neemfuno eziguqukayo zeshishini, ngelixa i-NoSQL "i-query modeling" indlela ivumela abaphuhlisi abafanayo ukuba basebenze kumthamo omkhulu wedatha kunye ne-latency ephantsi kunye ne-throughput ephezulu. Kungenxa yesi sizathu ukuba i-YugaByte DB ibonelela ngeSQL kunye ne-NoSQL APIs kwisiseko esiqhelekileyo, kunokukhuthaza enye yeendlela. Ukongeza, ngokubonelela ngokuhambelana neelwimi zedatha edumileyo kubandakanya iPostgreSQL kunye neCassandra, iYugaByte DB iqinisekisa ukuba abaphuhlisi akufuneki bafunde olunye ulwimi ukuze basebenze nenjini yedatha esasaziweyo, engaguqukiyo kakhulu.

Kweli nqaku, sijonge ukuba isiseko soyilo lwedatha yahluke njani phakathi kwePostgreSQL, Cassandra, kunye neMongoDB. Kumanqaku exesha elizayo, siza kuntywila kwiikhonsepthi zoyilo olukwinqanaba eliphezulu ezifana nezalathiso, intengiselwano, JOINs, imiyalelo ye-TTL, kunye namaxwebhu e-JSON.

Sikunqwenelela ukuphumla okuhle impelaveki kwaye sikumema ukuba i-webinar yasimahla, eya kuqhubeka ngoMeyi 14.

umthombo: www.habr.com

Yongeza izimvo