Bun-bheachdan Dealbhadh Stòr-dàta - A 'dèanamh coimeas eadar PostgreSQL, Cassandra, agus MongoDB

Halo, a charaidean. Mus fhalbh sinn airson an dàrna pàirt de shaor-làithean a’ Chèitein, bidh sinn a’ roinn leat an stuth a dh’eadar-theangaich sinn le dùil gun tèid sruth ùr a chuir air bhog air a’ chùrsa "DBMS càirdeach".

Bun-bheachdan Dealbhadh Stòr-dàta - A 'dèanamh coimeas eadar PostgreSQL, Cassandra, agus MongoDB

Bidh luchd-leasachaidh thagraidhean a’ caitheamh mòran ùine a’ dèanamh coimeas eadar grunn stòran-dàta obrachaidh gus am fear as fheàrr a fhreagras air an eallach obrach a tha san amharc a thaghadh. Faodaidh feumalachdan a bhith a’ toirt a-steach modaladh dàta nas sìmplidhe, barrantasan gnìomhachd, coileanadh leughaidh/sgrìobhaidh, sgèileadh còmhnard, agus fulangas sgàinidhean. Gu traidiseanta, bidh an roghainn a’ tòiseachadh leis an roinn stòr-dàta, SQL no NoSQL, leis gu bheil gach roinn a’ nochdadh seata soilleir de mhalairtean. Tha coileanadh àrd a thaobh latency ìosal agus trochur àrd air fhaicinn mar riatanas neo-mhalairteach agus mar sin tha e riatanach airson stòr-dàta sampall sam bith.

Is e adhbhar an artaigil seo luchd-leasachaidh aplacaid a chuideachadh gus an roghainn cheart a dhèanamh eadar SQL agus NoSQL ann an co-theacsa modaladh dàta tagraidh. Bheir sinn sùil air aon stòr-dàta SQL, is e sin PostgreSQL, agus dà stòr-dàta NoSQL, Cassandra agus MongoDB, gus bunaitean dealbhadh stòr-dàta a chòmhdach, leithid cruthachadh chlàran, an àireamhachadh, leughadh dàta bho bhòrd, agus cuir às dha. Anns an ath artaigil, bidh sinn cinnteach gun toir sinn sùil air clàran-amais, gnothaichean, JOINs, stiùiridhean TTL, agus dealbhadh stòr-dàta stèidhichte air JSON.

Dè an diofar eadar SQL agus NoSQL?

Bidh stòran-dàta SQL ag àrdachadh sùbailteachd tagraidh tro bharantasan gnìomhachd ACID, a bharrachd air a’ chomas aca dàta a cheasnachadh a’ cleachdadh JOINs ann an dòighean ris nach robh dùil a bharrachd air modalan stòr-dàta àbhaisteach gnàthach.

Leis an ailtireachd monolithic/nòd singilte aca agus cleachdadh modail mac-samhail sàr-thràill airson call dreuchd, tha dà fheart chudromach aig stòran-dàta traidiseanta SQL - scalability sgrìobhadh sreathach (ie sgaradh fèin-ghluasadach thar ioma nodan) agus call dàta fèin-ghluasadach / neoni. Tha seo a’ ciallachadh nach fhaod an àireamh de dhàta a gheibhear a bhith nas àirde na an ìre sgrìobhaidh as àirde de aon nód. A bharrachd air an sin, feumar aire a thoirt do chuid de chall dàta sealach ann am fulangas sgàinidhean (ann an ailtireachd co-roinnte gun dad). An seo feumaidh tu cuimhneachadh nach eil gealltanasan o chionn ghoirid fhathast air an nochdadh ann an leth-bhreac nan tràillean. Tha e duilich cuideachd ùrachaidhean neo-ùine a choileanadh ann an stòran-dàta SQL.

Mar as trice bidh stòran-dàta NoSQL air an cuairteachadh le nàdar, i.e. annta, tha dàta air a roinn ann an earrannan agus air a sgaoileadh thairis air grunn nodan. Feumaidh iad denormalization. Tha seo a’ ciallachadh gum feumar an dàta a chaidh a chuir a-steach a chopaigeadh grunn thursan gus freagairt a thoirt do na h-iarrtasan sònraichte a chuireas tu. Is e an amas iomlan àrd-choileanadh fhaighinn le bhith a’ lughdachadh na h-àireamh de shards a tha rim faighinn aig àm leughaidhean. Tha seo a’ ciallachadh gu bheil NoSQL ag iarraidh ort na ceistean agad a mhodail, fhad ‘s a tha SQL ag iarraidh ort an dàta agad a mhodaladh.

Tha NoSQL a’ cuimseachadh air a bhith a’ coileanadh àrd-choileanadh ann am buidheann sgaoilte agus is e seo an fheallsanachd bhunaiteach airson iomadh malairt dealbhadh stòr-dàta a tha a’ toirt a-steach call malairt ACID, JOINs, agus clàran-amais àrd-sgoile cunbhalach cruinneil.

Tha argamaid ann ged a tha stòran-dàta NoSQL a’ toirt seachad scalability sgrìobhaidh sreathach agus fulangas àrd de lochdan, tha call gheallaidhean gnìomhachd gan dèanamh mì-fhreagarrach airson dàta a tha deatamach do mhisean.

Tha an clàr a leanas a’ sealltainn mar a tha modaladh dàta ann an NoSQL eadar-dhealaichte bho SQL.

Bun-bheachdan Dealbhadh Stòr-dàta - A 'dèanamh coimeas eadar PostgreSQL, Cassandra, agus MongoDB

SQL agus NoSQL: Carson a tha feum air an dà chuid?

Tha e mar dhleastanas air tagraidhean san t-saoghal fhìor le àireamhan mòra de luchd-cleachdaidh, leithid Amazon.com, Netflix, Uber, agus Airbnb gnìomhan iom-fhillte, ioma-thaobhach a choileanadh. Mar eisimpleir, feumaidh tagradh e-malairt mar Amazon.com dàta aotrom, àrd-èiginneach a stòradh leithid fiosrachadh luchd-cleachdaidh, toraidhean, òrdughan, fàirdealan, còmhla ri dàta trom, nach eil cho mothachail leithid lèirmheasan toraidh, teachdaireachdan taic, gnìomhachd luchd-cleachdaidh, lèirmheasan luchd-cleachdaidh agus molaidhean. Gu nàdarra, tha na tagraidhean sin an urra ri co-dhiù aon stòr-dàta SQL còmhla ri co-dhiù aon stòr-dàta NoSQL. Ann an siostaman thar-roinneil agus cruinneil, tha stòr-dàta NoSQL ag obair mar thasg geo-sgaoileadh airson dàta a tha air a stòradh ann an stòr-dàta SQL stòr earbsach a tha a’ ruith ann an aon sgìre.

Ciamar a tha YugaByte DB a’ cothlamadh SQL agus NoSQL?

Air a thogail air einnsean stòraidh measgaichte stèidhichte air log, sgrìobadh fèin-ghluasadach, ath-riochdachadh co-aontachd sgaoilte agus gnothaichean sgaoilte ACID (air a bhrosnachadh le Google Spanner), is e YugaByte DB a’ chiad stòr-dàta stòr fosgailte san t-saoghal a tha co-chòrdail aig an aon àm ri NoSQL (Cassandra & Redis ) agus SQL (PostgreSQL). Mar a chithear sa chlàr gu h-ìosal, tha YCQL, an YugaByte DB API a tha co-chosmhail ri Cassandra, a’ cur bun-bheachdan ghnothaichean ACID singilte agus ioma-iuchrach agus clàran-amais àrd-sgoile cruinneil ris an NoSQL API, mar sin a’ cleachdadh ann an àm stòran-dàta malairt NoSQL. A bharrachd air an sin, tha YCQL, an YugaByte DB API a tha co-chosmhail ri PostgreSQL, a’ cur bun-bheachdan sgèileadh sgrìobhaidh sreathach agus fulangas fèin-ghluasadach ris an SQL API, a’ toirt stòran-dàta SQL sgaoilte don t-saoghal. Leis gu bheil YugaByte DB malairt ann an nàdar, faodar an NoSQL API a-nis a chleachdadh ann an co-theacsa dàta a tha deatamach do mhisean.

Bun-bheachdan Dealbhadh Stòr-dàta - A 'dèanamh coimeas eadar PostgreSQL, Cassandra, agus MongoDB

Mar a chaidh ainmeachadh roimhe san artaigil "A’ toirt a-steach YSQL: API SQL air a chuairteachadh le PostgreSQL airson YugaByte DB", tha an roghainn eadar SQL no NoSQL ann an YugaByte DB gu tur an urra ri feartan an eallach obrach bunaiteach:

  • Mas e gnìomhachd JOIN ioma-iuchrach a’ phrìomh eallach obrach agad, an uairsin nuair a thaghas tu YSQL, tuig gum faodadh na h-iuchraichean agad a bhith air an sgaoileadh thairis air ioma nodan, a’ leantainn gu latency nas àirde agus / no trochur nas ìsle na NoSQL.
  • Rud eile, tagh aon den dà API NoSQL, a’ cumail nad inntinn gum faigh thu coileanadh nas fheàrr mar thoradh air ceistean a chaidh a fhrithealadh bho aon nód aig aon àm. Faodaidh YugaByte DB a bhith na aon stòr-dàta obrachaidh airson tagraidhean fìor, iom-fhillte a dh’ fheumas grunn eallach obrach a riaghladh aig an aon àm.

Tha an obair-lann modaladh dàta san ath earrann stèidhichte air stòran-dàta YugaByte DB a tha co-chosmhail ri API PostgreSQL agus Cassandra, an taca ri stòran-dàta dùthchasach. Tha an dòigh-obrach seo a’ cur cuideam air cho furasta ‘s a tha e eadar-obrachadh le dà API eadar-dhealaichte (air dà phort eadar-dhealaichte) den aon bhuidheann stòr-dàta, an àite a bhith a’ cleachdadh cruinneachaidhean gu tur neo-eisimeileach de dhà stòr-dàta eadar-dhealaichte.
Anns na h-earrannan a leanas, bheir sinn sùil air an obair-lann modaladh dàta gus na h-eadar-dhealachaidhean agus cuid de na rudan cumanta anns na stòran-dàta a tha còmhdaichte a nochdadh.

Saotharlann Modail Dàta

Stàladh stòr-dàta

Leis an cuideam air dealbhadh modail dàta (seach ailtireachd cleachdadh iom-fhillte), stàlaidhidh sinn stòran-dàta ann an soithichean Docker air an inneal ionadail agus an uairsin bidh sinn ag eadar-obrachadh leotha a’ cleachdadh na sligean loidhne-àithne aca.

Stòr-dàta YugaByte DB a tha co-chosmhail ri PostgreSQL & Cassandra

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

Ruigsinneachd loidhne-àithne

Nach ceangail sinn ris na stòran-dàta a’ cleachdadh an t-slige loidhne-àithne airson na APIan co-fhreagarrach.

PostgreSQL

psql na shlige loidhne-àithne airson eadar-obrachadh le PostgreSQL. Airson a bhith furasta a chleachdadh, thig YugaByte DB le psql dìreach ann am pasgan a’ bhiona.

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

Cassandra

cqlsh na shlige loidhne-àithne airson eadar-obrachadh le Cassandra agus na stòran-dàta co-fhreagarrach aige tro CQL (Cassandra Query Language). Airson a bhith furasta a chleachdadh, thig YugaByte DB leis cqlsh anns a ’chatalog bin.
Thoir an aire gun deach CQL a bhrosnachadh le SQL agus gu bheil bun-bheachdan coltach ri clàran, sreathan, colbhan agus clàran-amais aige. Ach, mar chànan NoSQL, bidh e a’ cur seata sònraichte de chuingealachaidhean ris, a’ mhòr-chuid dhiubh a bhios sinn a’ còmhdach ann an artaigilean eile.

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

MongoDB

mongo na shlige loidhne-àithne airson eadar-obrachadh le MongoDB. Gheibhear e anns an eòlaire biona de stàladh MongoDB.

docker exec -it my-mongo bash 
cd bin
mongo

A 'cruthachadh clàr

A-nis is urrainn dhuinn eadar-obrachadh leis an stòr-dàta gus diofar obrachaidhean a dhèanamh a’ cleachdadh an loidhne-àithne. Feuch an tòisich sinn le bhith a’ cruthachadh clàr a bhios a’ stòradh fiosrachadh mu òrain a sgrìobh diofar luchd-ealain. Faodaidh na h-òrain seo a bhith nam pàirt de chlàr. Cuideachd tha feartan roghainneil airson òran mar a’ bhliadhna foillseachaidh, prìs, gnè agus rangachadh. Feumaidh sinn cunntas a thoirt air buadhan a bharrachd a dh’ fhaodadh a bhith a dhìth san àm ri teachd tron ​​raon “tags”. Faodaidh e dàta leth-structaraichte a stòradh ann an cruth paidhrichean prìomh-luach.

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

Tha cruthachadh clàr ann an Cassandra glè choltach ri PostgreSQL. Is e aon de na prìomh eadar-dhealachaidhean an dìth cuingealachaidhean ionracas (m.e. NOT NULL), ach tha seo an urra ris an tagradh, chan e stòr-dàta NoSQL. Anns a’ phrìomh iuchair tha iuchair sgaradh (colbh an Neach-ealain san eisimpleir gu h-ìosal) agus seata de cholbhan cruinneachadh (colbh SongTitle san eisimpleir gu h-ìosal). Bidh an iuchair dealachaidh a’ dearbhadh dè an sgaradh / shard a bu chòir an loidhne a chuir a-steach, agus tha na colbhan cruinneachaidh a’ nochdadh mar a bu chòir an dàta a chuir air dòigh taobh a-staigh an t-slat gnàthach.

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

Bidh MongoDB ag eagrachadh dàta gu stòran-dàta (Stòr-dàta) (coltach ri Keyspace ann an Cassandra), far a bheil Cruinneachaidhean (coltach ri clàran) anns a bheil Sgrìobhainnean (coltach ri sreathan ann an clàr). Ann am MongoDB, gu bunaiteach chan eil feum air sgeama tùsail a mhìneachadh. Sgioba "cleachd stòr-dàta", a chithear gu h-ìosal, a’ toirt an stòr-dàta air a’ chiad ghairm agus ag atharrachadh co-theacs an stòr-dàta a chaidh a chruthachadh às ùr. Chan fheum eadhon cruinneachaidhean a bhith air an cruthachadh gu soilleir; bidh iad gan cruthachadh gu fèin-obrachail, dìreach nuair a chuireas tu a’ chiad sgrìobhainn ri cruinneachadh ùr. Thoir an aire gu bheil MongoDB a’ cleachdadh an stòr-dàta deuchainn gu bunaiteach, agus mar sin ruithidh gnìomhachd ìre cruinneachaidh sam bith gun a bhith a’ sònrachadh stòr-dàta sònraichte air gu bunaiteach.

use myNewDatabase;

A’ faighinn fiosrachadh mu dheidhinn clàr
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;

Cuir a-steach dàta ann an clàr
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

Faireachdainn iomlan INSERT ann an Cassandra a’ coimhead glè choltach ris an fhear ann am PostgreSQL. Ach, tha aon eadar-dhealachadh mòr ann an semantics. Ann an Cassandra INSERT gu dearbh is e gnìomh a th’ ann UPSERT, far a bheil na luachan mu dheireadh air an cur ris an loidhne ma tha an loidhne ann mu thràth.

Tha inntrigeadh dàta coltach ri PostgreSQL INSERT àrd-ìre

.

MongoDB

Eadhon ged a tha MongoDB na stòr-dàta NoSQL mar Cassandra, chan eil dad aig an obair cuir a-steach aige ri giùlan semantach Cassandra. Ann am MongoDB cuir a-steach () chan eil cothroman ann UPSERT, a tha ga dhèanamh coltach ri PostgreSQL. A 'cur ris an dàta bunaiteach às aonais _idspecified adhbharachadh gun tèid sgrìobhainn ùr a chur ris a’ chruinneachadh.

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

Ceist Clàr

Is dòcha gur e an eadar-dhealachadh as cudromaiche eadar SQL agus NoSQL a thaobh togail cheistean an cànan a thathar a’ cleachdadh FROM и WHERE. Tha SQL a’ ceadachadh às deidh faireachdainn FROM tagh ioma-chlàir, agus abairt le WHERE faodaidh e a bhith iom-fhillteachd sam bith (a’ gabhail a-steach obrachaidhean JOIN eadar bùird). Ach, tha NoSQL buailteach cuingealachadh mòr a chuir air FROM, agus gun oibrich ach le aon bhòrd sònruichte, agus a steach WHERE, feumaidh am prìomh iuchair a bhith air a shònrachadh an-còmhnaidh. Tha seo a’ ceangal ri putadh coileanaidh NoSQL air an do bhruidhinn sinn na bu thràithe. Tha am miann seo a’ leantainn gu gach lùghdachadh a dh’ fhaodadh a bhith ann an eadar-obrachadh tar-bhòrd agus tar-iuchrach sam bith. Faodaidh e dàil mhòr a thoirt a-steach ann an conaltradh eadar-nód nuair a thathar a’ freagairt iarrtas agus mar sin tha e nas fheàrr a sheachnadh san fharsaingeachd. Mar eisimpleir, tha Cassandra ag iarraidh gum bi ceistean cuingealaichte ri cuid de ghnìomhaichean (a-mhàin =, IN, <, >, =>, <=) air iuchraichean sgaradh, ach a-mhàin nuair a dh'iarras tu clàr-amais àrd-sgoile (chan eil ach an = gnìomhaiche ceadaichte an seo).

PostgreSQL

Gu h-ìosal tha trì eisimpleirean de cheistean a tha furasta an cur an gnìomh le stòr-dàta SQL.

  • Seall a h-uile òran le neach-ealain;
  • Seall a h-uile òran leis an neach-ealain a tha a rèir a’ chiad phàirt den tiotal;
  • Seall a h-uile òran le neach-ealain aig a bheil facal sònraichte san tiotal agus aig a bheil prìs nas lugha na 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

De na ceistean PostgreSQL gu h-àrd, chan obraich ach a’ chiad fhear gun atharrachadh ann an Cassandra, leis gu bheil an gnìomhaiche LIKE chan urrainnear a chuir an sàs ann an colbhan cnuasachaidh leithid SongTitle. Anns a 'chùis seo, chan eil ach luchd-obrachaidh ceadaichte = и 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

Mar a chithear anns na h-eisimpleirean roimhe, is e am prìomh dhòigh airson ceistean a chruthachadh ann am MongoDB db.collection.find(). Tha an dòigh seo gu soilleir a’ toirt a-steach ainm a’ cho-chruinneachaidh (music san eisimpleir gu h-ìosal), agus mar sin tha e toirmisgte a bhith a’ ceasnachadh grunn chruinneachaidhean.

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

Leughadh a h-uile sreath de chlàr

Tha leughadh a h-uile sreath dìreach na chùis shònraichte den phàtran ceiste air an do choimhead sinn na bu thràithe.

PostgreSQL

SELECT * 
FROM Music;

Cassandra

Coltach ris an eisimpleir PostgreSQL gu h-àrd.

MongoDB

db.music.find( {} );

Deasachadh dàta ann an clàr

PostgreSQL

Tha PostgreSQL a’ toirt seachad stiùireadh UPDATE gus dàta atharrachadh. Chan eil cothroman aice UPSERT, mar sin fàilligidh an aithris seo mura h-eil an loidhne san stòr-dàta tuilleadh.

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

Cassandra

Tha aig Cassandra UPDATE coltach ri PostgreSQL. UPDATE tha an aon semantics aige UPSERT, coltach INSERT.

Coltach ris an eisimpleir PostgreSQL gu h-àrd.

MongoDB
Obrachadh ùrachadh () ann am MongoDB is urrainn dha sgrìobhainn gnàthaichte ùrachadh gu tur no ùrachadh ach raointean sònraichte. Gu gnàthach, cha bhith e ag ùrachadh ach aon sgrìobhainn le semantics ciorramach UPSERT. Ag ùrachadh grunn sgrìobhainnean agus giùlan coltach ris UPSERT faodar a chuir an sàs le bhith a’ suidheachadh brataichean a bharrachd airson an obrachaidh. Mar eisimpleir, anns an eisimpleir gu h-ìosal, tha gnè neach-ealain sònraichte air ùrachadh stèidhichte air an òran aige.

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

A 'toirt air falbh dàta bho chlàr

PostgreSQL

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

Cassandra

Coltach ris an eisimpleir PostgreSQL gu h-àrd.

MongoDB

Tha dà sheòrsa gnìomhachd aig MongoDB gus sgrìobhainnean a dhubhadh às - sguab às aon () /sguab às mòran() и cuir às (). Bidh an dà sheòrsa a’ sguabadh às sgrìobhainnean ach a’ tilleadh diofar thoraidhean.

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

A 'toirt air falbh clàr

PostgreSQL

DROP TABLE Music;

Cassandra

Coltach ris an eisimpleir PostgreSQL gu h-àrd.

MongoDB

db.music.drop();

co-dhùnadh

Tha an deasbad mu bhith a’ taghadh eadar SQL agus NoSQL air a bhith feargach airson còrr is 10 bliadhna. Tha dà phrìomh thaobh anns an deasbad seo: ailtireachd einnsean stòr-dàta (monolithic, gnìomhachd SQL vs sgaoilte, NoSQL neo-ghnìomhach) agus dòigh dealbhaidh stòr-dàta (modaileadh an dàta agad ann an SQL vs modaladh do cheistean ann an NoSQL).

Le stòr-dàta gnìomhachd sgaoilte mar YugaByte DB, faodar an deasbad mu ailtireachd stòr-dàta a chuir gu fois gu furasta. Mar a bhios meudan dàta a’ fàs nas motha na na ghabhas sgrìobhadh gu aon nód, bidh feum air ailtireachd làn-sgaoileadh a bheir taic do scalability sgrìobhaidh sreathach le roinneadh / ath-chothromachadh fèin-ghluasadach.

A bharrachd air an sin, mar a chaidh a ràdh ann an aon de na h-artaigilean Google uisge, Tha ailtireachd obrachail, làidir cunbhalach a-nis air a chleachdadh barrachd gus sùbailteachd leasachaidh nas fheàrr a thoirt seachad na ailtireachd neo-ghnìomhach, aig a’ cheann thall cunbhalach.

A’ tilleadh chun deasbad mu dhealbhadh stòr-dàta, tha e cothromach a ràdh gu bheil an dà dhòigh dealbhaidh (SQL agus NoSQL) riatanach airson tagradh iom-fhillte san t-saoghal fhìor. Tha dòigh-obrach “modaladh dàta” SQL a’ leigeil le luchd-leasachaidh coinneachadh nas fhasa ri riatanasan gnìomhachais a tha ag atharrachadh, agus tha dòigh-obrach “modaladh ceist” NoSQL a’ leigeil leis na h-aon luchd-leasachaidh obrachadh air meudan mòra de dhàta le latency ìosal agus trochur àrd. Is ann air an adhbhar seo a tha YugaByte DB a’ toirt seachad SQL agus NoSQL APIs ann an cridhe cumanta, seach a bhith a’ brosnachadh aon de na dòighean-obrach. A bharrachd air an sin, le bhith a’ toirt seachad co-chòrdalachd le cànanan stòr-dàta mòr-chòrdte a ’toirt a-steach PostgreSQL agus Cassandra, tha YugaByte DB a’ dèanamh cinnteach nach fheum luchd-leasachaidh cànan eile ionnsachadh gus obrachadh le einnsean stòr-dàta sgaoilte, cunbhalach.

San artaigil seo, choimhead sinn air mar a tha bunaitean dealbhadh stòr-dàta eadar-dhealaichte eadar PostgreSQL, Cassandra, agus MongoDB. Ann an artaigilean san àm ri teachd, bidh sinn a’ dàibheadh ​​​​a-steach do bhun-bheachdan dealbhaidh adhartach leithid clàran-amais, gnothaichean, JOINs, stiùiridhean TTL, agus sgrìobhainnean JSON.

Tha sinn a’ guidhe deagh chòrr den deireadh-sheachdain dhut agus a’ toirt cuireadh dhut webinar saor an asgaidh, a thèid a chumail air 14 Cèitean.

Source: www.habr.com

Cuir beachd ann