Awọn ipilẹ Apẹrẹ aaye data - Ifiwera PostgreSQL, Cassandra, ati MongoDB

Hello, awọn ọrẹ. Ṣaaju ki o to lọ fun apakan keji ti awọn isinmi May, a pin pẹlu rẹ ohun elo ti a tumọ ni ifojusọna ti ifilọlẹ ṣiṣan tuntun kan lori iṣẹ-ẹkọ naa "DBMS ti o ni ibatan".

Awọn ipilẹ Apẹrẹ aaye data - Ifiwera PostgreSQL, Cassandra, ati MongoDB

Awọn olupilẹṣẹ ohun elo n lo akoko pupọ lati ṣe afiwe awọn apoti isura data iṣiṣẹ lọpọlọpọ lati yan eyi ti o baamu iṣẹ ṣiṣe ti a pinnu julọ. Awọn iwulo le pẹlu iṣatunṣe data irọrun, awọn iṣeduro iṣowo, iṣẹ kika/kikọ, iwọn petele, ati ifarada ẹbi. Ni aṣa, yiyan bẹrẹ pẹlu ẹka data data, SQL tabi NoSQL, niwọn igba ti ẹka kọọkan ṣafihan eto-iṣojuuwọn ti o han gbangba. Išẹ giga ni awọn ofin ti lairi kekere ati iṣelọpọ giga ni a rii ni gbogbogbo bi ibeere ti kii ṣe iṣowo ati nitorinaa o ṣe pataki fun eyikeyi data ayẹwo.

Idi ti nkan yii ni lati ṣe iranlọwọ fun awọn olupilẹṣẹ ohun elo lati ṣe yiyan ti o tọ laarin SQL ati NoSQL ni aaye ti awoṣe data ohun elo. A yoo wo ibi ipamọ data SQL kan, eyun PostgreSQL, ati awọn apoti isura infomesonu NoSQL meji, Cassandra ati MongoDB, lati bo awọn ipilẹ ti apẹrẹ data data, gẹgẹbi ṣiṣẹda awọn tabili, gbejade wọn, kika data lati tabili, ati piparẹ rẹ. Ninu nkan ti o tẹle, a yoo rii daju lati wo awọn atọka, awọn iṣowo, JOINs, awọn itọsọna TTL, ati apẹrẹ data orisun-JSON.

Kini iyato laarin SQL ati NoSQL?

Awọn apoti isura infomesonu SQL ṣe alekun irọrun ohun elo nipasẹ awọn iṣeduro iṣowo ACID, bakanna bi agbara wọn lati beere data nipa lilo awọn JOIN ni awọn ọna airotẹlẹ lori awọn awoṣe data ibatan deede ti o wa tẹlẹ.

Fi fun wọn monolithic / ọkan-node faaji ati lilo ti titunto si-ẹrú atunse awoṣe fun apọju, ibile SQL infomesonu ko si meji pataki awọn ẹya ara ẹrọ - laini kikọ scalability (ie ipinya laifọwọyi kọja ọpọ apa) ati laifọwọyi / odo data pipadanu. Eyi tumọ si pe iye data ti o gba ko le kọja iwọn kikọ ti o pọju ti oju ipade kan. Ni afikun, diẹ ninu awọn ipadanu data igba diẹ gbọdọ jẹ sinu akọọlẹ ni ifarada ẹbi (ninu faaji-ko si ohunkan). Nibi o nilo lati ranti pe awọn iṣẹ aipẹ ko ti han ninu ẹda ẹrú naa. Awọn imudojuiwọn ti kii-downtime tun nira lati ṣaṣeyọri ni awọn apoti isura data SQL.

NoSQL infomesonu ti wa ni maa pin nipa iseda, i.e. ninu wọn, data ti pin si awọn apakan ati pin kaakiri awọn apa pupọ. Wọn nilo denormalization. Eyi tumọ si pe data ti a tẹ gbọdọ tun jẹ daakọ ni ọpọlọpọ igba lati dahun si awọn ibeere kan pato ti o firanṣẹ. Ibi-afẹde gbogbogbo ni lati gba iṣẹ ṣiṣe giga nipasẹ idinku nọmba awọn shards ti o wa lakoko awọn kika. Eyi tumọ si pe NoSQL nilo ki o ṣe awoṣe awọn ibeere rẹ, lakoko ti SQL nilo ki o ṣe awoṣe data rẹ.

NoSQL dojukọ lori iyọrisi iṣẹ giga ni iṣupọ pinpin ati pe eyi ni idi ipilẹ fun ọpọlọpọ awọn iṣowo apẹrẹ data data ti o pẹlu pipadanu idunadura ACID, JOINs, ati awọn atọka atẹle agbaye ni ibamu.

ariyanjiyan wa pe lakoko ti awọn apoti isura infomesonu NoSQL pese scalability kikọ laini ati ifarada ẹbi giga, pipadanu awọn iṣeduro iṣowo jẹ ki wọn ko yẹ fun data pataki-pataki.

Tabili ti o tẹle n fihan bi awoṣe data ni NoSQL ṣe yatọ si SQL.

Awọn ipilẹ Apẹrẹ aaye data - Ifiwera PostgreSQL, Cassandra, ati MongoDB

SQL ati NoSQL: Kilode ti awọn mejeeji nilo?

Awọn ohun elo gidi-aye pẹlu awọn nọmba nla ti awọn olumulo, gẹgẹbi Amazon.com, Netflix, Uber, ati Airbnb, jẹ iṣẹ-ṣiṣe pẹlu ṣiṣe awọn iṣẹ-ṣiṣe ti o pọju, awọn iṣẹ-ṣiṣe ti o pọju. Fun apẹẹrẹ, ohun elo e-commerce bii Amazon.com nilo lati tọju iwuwo fẹẹrẹ, data pataki-pataki gẹgẹbi alaye olumulo, awọn ọja, awọn aṣẹ, awọn iwe-owo, pẹlu eru, data ifura ti ko ni itara gẹgẹbi awọn atunwo ọja, awọn ifiranṣẹ atilẹyin, iṣẹ olumulo, olumulo agbeyewo ati awọn iṣeduro. Nipa ti, awọn ohun elo wọnyi gbarale o kere ju aaye data SQL kan pẹlu o kere ju data NoSQL kan. Ni agbegbe-agbegbe ati awọn ọna ṣiṣe agbaye, aaye data NoSQL n ṣiṣẹ bi kaṣe pinpin geo-pin fun data ti o fipamọ sinu orisun SQL ti o gbẹkẹle ti nṣiṣẹ ni agbegbe kan pato.

Bawo ni YugaByte DB ṣe darapọ SQL ati NoSQL?

Ti a ṣe lori ẹrọ ibi-itọju alapọpọ ti iṣalaye log, fifọ adaṣe, pinpin pinpin ipohunpo ati awọn iṣowo pinpin ACID (atilẹyin nipasẹ Google Spanner), YugaByte DB jẹ orisun data orisun ṣiṣi akọkọ ti agbaye ti o ni ibamu nigbakanna pẹlu NoSQL (Cassandra & Redis) ati SQL (PostgreSQL). Gẹgẹbi a ṣe han ninu tabili ni isalẹ, YCQL, YugaByte DB API ti o ni ibamu pẹlu Cassandra, ṣafikun awọn imọran ti ẹyọkan ati awọn iṣowo ACID-bọtini pupọ ati awọn atọka Atẹle agbaye si NoSQL API, nitorinaa mu ni akoko ti awọn apoti isura data NoSQL idunadura. Ni afikun, YCQL, YugaByte DB API ti o ni ibamu pẹlu PostgreSQL, ṣe afikun awọn imọran ti iwọn kikọ laini ati ifarada aṣiṣe aifọwọyi si SQL API, mu awọn apoti isura data SQL ti o pin si agbaye. Nitori YugaByte DB jẹ iṣowo ni iseda, NoSQL API le ṣee lo ni bayi ti data pataki-ipinfunni.

Awọn ipilẹ Apẹrẹ aaye data - Ifiwera PostgreSQL, Cassandra, ati MongoDB

Gẹgẹbi a ti sọ tẹlẹ ninu nkan naa "Ṣifihan YSQL: A PostgreSQL Pipin SQL API Ibaramu fun YugaByte DB", yiyan laarin SQL tabi NoSQL ni YugaByte DB gbarale patapata lori awọn abuda ti fifuye iṣẹ abẹlẹ:

  • Ti iṣẹ ṣiṣe akọkọ rẹ jẹ awọn iṣẹ JOIN pupọ-bọtini, lẹhinna nigbati o ba yan YSQL, loye pe awọn bọtini rẹ le pin kaakiri awọn apa ọpọ, ti o yorisi lairi ti o ga ati/tabi igbejade kekere ju NoSQL.
  • Bibẹẹkọ, yan boya ninu awọn NoSQL API meji, ni lokan pe iwọ yoo ni iṣẹ ṣiṣe to dara julọ nitori abajade awọn ibeere ti o ṣiṣẹ lati ipade kan ni akoko kan. YugaByte DB le ṣiṣẹ bi ibi ipamọ data iṣiṣẹ kan fun agbaye gidi, awọn ohun elo eka ti o nilo lati ṣakoso awọn ẹru iṣẹ lọpọlọpọ nigbakanna.

Laabu awoṣe awoṣe Data ni abala ti nbọ da lori PostgreSQL ati Cassandra API ibaramu YugaByte DB data data, ni idakeji si awọn data data abinibi. Ọna yii n tẹnuba irọrun ti ibaraenisọrọ pẹlu awọn API oriṣiriṣi meji (lori awọn ebute oko oju omi oriṣiriṣi meji) ti iṣupọ data kanna, ni idakeji si lilo awọn iṣupọ ominira patapata ti awọn apoti isura data oriṣiriṣi meji.
Ni awọn apakan atẹle, a yoo wo laabu awoṣe data lati ṣapejuwe awọn iyatọ ati diẹ ninu awọn ohun ti o wọpọ ti awọn data data ti o bo.

Data Modelling yàrá

Fifi sori aaye data

Fi fun tcnu lori apẹrẹ awoṣe data (dipo awọn ile-itumọ imuṣiṣẹ idiju), a yoo fi awọn apoti isura infomesonu sinu awọn apoti Docker sori ẹrọ agbegbe ati lẹhinna ṣe ajọṣepọ pẹlu wọn ni lilo awọn ikarahun laini aṣẹ wọn.

PostgreSQL & Cassandra ibaramu 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

MongoDB

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

Wiwọle laini aṣẹ

Jẹ ki a sopọ si awọn data data nipa lilo ikarahun laini aṣẹ fun awọn API ti o baamu.

PostgreSQL

psql jẹ ikarahun laini aṣẹ fun ibaraenisepo pẹlu PostgreSQL. Fun irọrun ti lilo, YugaByte DB wa pẹlu psql ọtun ninu folda bin.

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

Cassandra

cqlsh jẹ ikarahun laini aṣẹ fun ibaraenisọrọ pẹlu Cassandra ati awọn apoti isura infomesonu ibaramu nipasẹ CQL (Ede ibeere Cassandra). Fun irọrun ti lilo, YugaByte DB wa pẹlu cqlsh ninu awọn katalogi bin.
Ṣe akiyesi pe CQL jẹ atilẹyin nipasẹ SQL ati pe o ni awọn imọran ti o jọra ti awọn tabili, awọn ori ila, awọn ọwọn ati awọn atọka. Sibẹsibẹ, gẹgẹbi ede NoSQL, o ṣe afikun awọn idiwọn kan, pupọ julọ eyiti a yoo tun bo ninu awọn nkan miiran.

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

MongoDB

mongo jẹ ikarahun laini aṣẹ fun ibaraenisepo pẹlu MongoDB. O le rii ni iwe ilana bin ti fifi sori MongoDB.

docker exec -it my-mongo bash 
cd bin
mongo

Ṣiṣẹda tabili

Bayi a le ṣe ajọṣepọ pẹlu data data lati ṣe awọn iṣẹ ṣiṣe lọpọlọpọ nipa lilo laini aṣẹ. Jẹ ki a bẹrẹ nipa ṣiṣẹda tabili ti o tọju alaye nipa awọn orin ti a kọ nipasẹ awọn oṣere oriṣiriṣi. Awọn orin wọnyi le jẹ apakan ti awo-orin kan. Paapaa awọn abuda iyan fun orin kan jẹ ọdun idasilẹ, idiyele, oriṣi ati idiyele. A nilo lati ṣe akọọlẹ fun awọn abuda afikun ti o le nilo ni ọjọ iwaju nipasẹ aaye “awọn afi”. O le fipamọ data ologbele-ti eleto ni irisi awọn orisii iye bọtini.

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

Ṣiṣẹda tabili kan ni Cassandra jẹ iru pupọ si PostgreSQL. Ọkan ninu awọn iyatọ akọkọ ni aini awọn idiwọ iduroṣinṣin (fun apẹẹrẹ KO NULL), ṣugbọn eyi ni ojuṣe ti ohun elo, kii ṣe aaye data NoSQL. Bọtini akọkọ ni bọtini ipin (iwe olorin ni apẹẹrẹ ni isalẹ) ati ṣeto awọn ọwọn iṣupọ (iwe SongTitle ni apẹẹrẹ ni isalẹ). Bọtini ipin naa pinnu iru ipin/shard kana yẹ ki o gbe sinu, ati awọn ọwọn iṣupọ tọkasi bi o ṣe yẹ ki data ṣeto laarin shard lọwọlọwọ.

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 ṣeto data sinu awọn apoti isura infomesonu (Ibi data) (bii Keyspace ni Cassandra), nibiti Awọn akojọpọ wa (bii awọn tabili) ti o ni Awọn iwe aṣẹ (bii awọn ori ila ninu tabili). Ni MongoDB, ko si iwulo lati ṣalaye ero akọkọ kan. Egbe "lo database", ti o han ni isalẹ, ṣe imudara data lori ipe akọkọ ati yi ọrọ-ọrọ pada fun aaye data tuntun ti a ṣẹda. Paapaa awọn ikojọpọ ko nilo lati ṣẹda ni gbangba; a ṣẹda wọn laifọwọyi, ni irọrun nigbati o ba ṣafikun iwe akọkọ si ikojọpọ tuntun. Ṣe akiyesi pe MongoDB nlo aaye data idanwo nipasẹ aiyipada, nitorinaa eyikeyi iṣẹ-ipele ikojọpọ laisi asọye aaye data kan pato yoo ṣiṣẹ lori rẹ nipasẹ aiyipada.

use myNewDatabase;

Ngba alaye nipa a tabili
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;

Titẹ data sinu tabili kan
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

Ìwò ikosile INSERT ni Cassandra dabi pupọ si iyẹn ni PostgreSQL. Sibẹsibẹ, iyatọ nla kan wa ninu imọ-ọrọ. Ni Cassandra INSERT jẹ kosi ohun isẹ UPSERT, nibiti awọn iye ti o kẹhin ti wa ni afikun si ila ti ila naa ba wa tẹlẹ.

Akọsilẹ data jẹ iru si PostgreSQL INSERT ti o ga

.

MongoDB

Paapaa botilẹjẹpe MongoDB jẹ aaye data NoSQL bi Cassandra, iṣẹ fifi sii rẹ ko ni nkankan ni wọpọ pẹlu ihuwasi atunmọ ti Cassandra. Ninu MongoDB fi sii() ko ni anfani UPSERT, eyiti o jẹ ki o jọra si PostgreSQL. Fifi aiyipada data lai _idspecified yoo fa iwe titun lati fi kun si gbigba.

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

Ibeere tabili

Boya iyatọ pataki julọ laarin SQL ati NoSQL ni awọn ofin ti ikole ibeere ni ede ti a lo FROM и WHERE. SQL faye gba lẹhin ikosile FROM yan ọpọ tabili, ati ikosile pẹlu WHERE le jẹ ti eyikeyi idiju (pẹlu awọn iṣẹ ṣiṣe JOIN laarin awọn tabili). Sibẹsibẹ, NoSQL duro lati fa aropin to lagbara lori FROM, ati ki o ṣiṣẹ nikan pẹlu ọkan pàtó kan tabili, ati ni WHERE, bọtini akọkọ gbọdọ wa ni pato nigbagbogbo. Eyi ni asopọ sinu titari iṣẹ NoSQL ti a ti sọrọ nipa iṣaaju. Ifẹ yii nyorisi gbogbo idinku ti o ṣeeṣe ni eyikeyi agbelebu-tabular ati ibaraenisepo bọtini agbelebu. O le ṣafihan idaduro nla ni ibaraẹnisọrọ laarin-node nigbati o ba n dahun si ibeere kan ati pe o dara julọ lati yago fun ni gbogbogbo. Fun apẹẹrẹ, Cassandra nilo awọn ibeere lati ni opin si awọn oniṣẹ kan (nikan =, IN, <, >, =>, <=) lori awọn bọtini ipin, ayafi nigbati o ba n beere atọka keji (nikan = oniṣẹ ni a gba laaye nibi).

PostgreSQL

Ni isalẹ wa awọn apẹẹrẹ mẹta ti awọn ibeere ti o le ṣe ni irọrun nipasẹ ibi data SQL kan.

  • Ṣe afihan gbogbo awọn orin nipasẹ oṣere kan;
  • Ṣe afihan gbogbo awọn orin nipasẹ olorin ti o baamu apakan akọkọ ti akọle;
  • Ṣe afihan gbogbo awọn orin nipasẹ oṣere ti o ni ọrọ kan ninu akọle ati ni idiyele ti o kere ju 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

Ninu awọn ibeere PostgreSQL ti a ṣe akojọ loke, akọkọ nikan yoo ṣiṣẹ laisi iyipada ni Cassandra, nitori oniṣẹ ẹrọ. LIKE ko le ṣe lo si awọn ọwọn iṣupọ gẹgẹbi SongTitle. Ni idi eyi, awọn oniṣẹ nikan ni a gba laaye = и 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

Gẹgẹbi a ṣe han ninu awọn apẹẹrẹ ti tẹlẹ, ọna akọkọ fun ṣiṣẹda awọn ibeere ni MongoDB jẹ db.collection.ri (). Ọna yii ni gbangba ni orukọ akojọpọ ninu (music ninu apẹẹrẹ ti o wa ni isalẹ), nitorinaa ibeere awọn akojọpọ pupọ jẹ eewọ.

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

Kika gbogbo awọn ori ila ti tabili kan

Kika gbogbo awọn ori ila jẹ ọran pataki ti apẹẹrẹ ibeere ti a wo tẹlẹ.

PostgreSQL

SELECT * 
FROM Music;

Cassandra

Iru si apẹẹrẹ PostgreSQL loke.

MongoDB

db.music.find( {} );

Nsatunkọ awọn data ni a tabili

PostgreSQL

PostgreSQL pese awọn itọnisọna UPDATE lati yi data. O ko ni anfani UPSERT, nitorina alaye yii yoo kuna ti ila naa ko ba si ni ibi ipamọ data mọ.

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

Cassandra

Cassandra ni o ni UPDATE iru si PostgreSQL. UPDATE ni o ni kanna atunmọ UPSERT, iru INSERT.

Iru si apẹẹrẹ PostgreSQL loke.

MongoDB
Isẹ imudojuiwọn () ni MongoDB le ṣe imudojuiwọn iwe ti o wa tẹlẹ tabi ṣe imudojuiwọn awọn aaye kan nikan. Nipa aiyipada, o ṣe imudojuiwọn iwe kan nikan pẹlu alaabo imọ-itumọ UPSERT. Nmu ọpọ awọn iwe aṣẹ ati iru iwa UPSERT le ṣee lo nipa siseto awọn asia afikun fun iṣẹ naa. Fun apẹẹrẹ, ninu apẹẹrẹ ni isalẹ, oriṣi ti oṣere kan pato ti ni imudojuiwọn da lori orin rẹ.

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

Yiyọ data lati kan tabili

PostgreSQL

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

Cassandra

Iru si apẹẹrẹ PostgreSQL loke.

MongoDB

MongoDB ni awọn iṣẹ ṣiṣe meji lati pa awọn iwe aṣẹ rẹ - pa Ọkan() /PaarẹỌpọlọpọ() и yọ (). Awọn oriṣi mejeeji paarẹ awọn iwe aṣẹ ṣugbọn da awọn abajade oriṣiriṣi pada.

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

Npa tabili kan

PostgreSQL

DROP TABLE Music;

Cassandra

Iru si apẹẹrẹ PostgreSQL loke.

MongoDB

db.music.drop();

ipari

Jomitoro nipa yiyan laarin SQL ati NoSQL ti nja fun diẹ sii ju ọdun 10 lọ. Awọn aaye akọkọ meji lo wa si ariyanjiyan yii: faaji ẹrọ data data (monolithic, idunadura SQL vs pinpin, NoSQL ti kii ṣe idunadura) ati ọna apẹrẹ data (apẹrẹ data rẹ ni SQL vs awoṣe awọn ibeere rẹ ni NoSQL).

Pẹlu ibi ipamọ data iṣowo ti o pin bi YugaByte DB, ariyanjiyan nipa faaji data le ni irọrun fi si isinmi. Bi awọn iwọn data ṣe tobi ju ohun ti a le kọ si ipade kan, faaji ti o pin ni kikun ti o ṣe atilẹyin irẹwẹsi kikọ laini pẹlu sharding/iwọntunwọnsi laifọwọyi di pataki.

Ni afikun, bi a ti sọ ninu ọkan ninu awọn nkan Google awọsanma,Idunadura, strongly dédé architectures ni o wa bayi siwaju sii ,lo lati pese dara idagbasoke agility ju ti kii-idunadura, , bajẹ dédé architectures.

Pada si ijiroro apẹrẹ data, o tọ lati sọ pe awọn ọna apẹrẹ mejeeji (SQL ati NoSQL) jẹ pataki fun eyikeyi ohun elo gidi-aye ti o nipọn. Ọna “awoṣe data” SQL ngbanilaaye awọn olupilẹṣẹ lati ni irọrun diẹ sii ni irọrun pade awọn ibeere iṣowo iyipada, lakoko ti ọna NoSQL “iṣapẹrẹ ibeere” jẹ ki awọn olupilẹṣẹ kanna ṣiṣẹ lori awọn iwọn nla ti data pẹlu lairi kekere ati iṣelọpọ giga. O jẹ fun idi eyi ti YugaByte DB n pese SQL ati NoSQL APIs ni ipilẹ ti o wọpọ, dipo igbega ọkan ninu awọn isunmọ. Ni afikun, nipa ipese ibamu pẹlu awọn ede data olokiki olokiki pẹlu PostgreSQL ati Cassandra, YugaByte DB ṣe idaniloju pe awọn olupilẹṣẹ ko ni lati kọ ede miiran lati ṣiṣẹ pẹlu ẹrọ data ti o pin kaakiri, ti o ni ibamu pupọ.

Ninu nkan yii, a wo bii awọn ipilẹ apẹrẹ data ṣe yatọ laarin PostgreSQL, Cassandra, ati MongoDB. Ninu awọn nkan iwaju, a yoo bọbọ sinu awọn imọran apẹrẹ ilọsiwaju gẹgẹbi awọn atọka, awọn iṣowo, JOINs, awọn itọsọna TTL, ati awọn iwe aṣẹ JSON.

A fẹ o kan nla isinmi ti awọn ìparí ati ki o pe o lati free webinar, eyi ti yoo waye ni May 14th.

orisun: www.habr.com

Fi ọrọìwòye kun