Nā Kuleana Hoʻolālā Pūnaewele - Hoʻohālikelike i ka PostgreSQL, Cassandra a me MongoDB

Aloha mai e nā hoa. Ma mua o ka haʻalele ʻana no ka ʻāpana ʻelua o nā lā hoʻomaha o Mei, ke hōʻike aku nei mākou iā ʻoe i nā mea a mākou i unuhi ai no ka hoʻomaka ʻana o kahi kahawai hou ma ka papa. "DBMS pili".

Nā Kuleana Hoʻolālā Pūnaewele - Hoʻohālikelike i ka PostgreSQL, Cassandra a me MongoDB

Hoʻohana nui nā mea hoʻomohala noi i ka manawa e hoʻohālikelike ai i nā ʻikepili hana he nui e koho i ka mea i kūpono loa i ka hana i manaʻo ʻia. Hiki i nā pono ke komo i ka hoʻohālike ʻikepili maʻalahi, nā hōʻoiaʻiʻo kālepa, ka hana heluhelu/kākau, ka hoʻonui ʻana i ka pae, a me ka hoʻomanawanui hewa. ʻO ka mea maʻamau, hoʻomaka ka koho me ka ʻāpana waihona, SQL a i ʻole NoSQL, no ka mea e hōʻike ana kēlā me kēia ʻāpana i kahi hoʻonohonoho o nā kālepa. ʻIke ʻia ka hana kiʻekiʻe ma ke ʻano o ka latency haʻahaʻa a me ka throughput kiʻekiʻe ma ke ʻano he koi kūʻai ʻole a no laila pono ia no kēlā me kēia waihona waihona.

ʻO ke kumu o kēia ʻatikala e kōkua i nā mea hoʻomohala noi e hana i ka koho kūpono ma waena o SQL a me NoSQL i ka pōʻaiapili o ka hoʻohālikelike ʻikepili noi. E nānā mākou i hoʻokahi waihona SQL, ʻo ia hoʻi ʻo PostgreSQL, a me ʻelua mau waihona NoSQL, ʻo Cassandra a me MongoDB, e uhi i nā kumu kumu o ka hoʻolālā ʻikepili, e like me ka hana ʻana i nā papa, hoʻonui iā lākou, heluhelu i ka ʻikepili mai kahi papaʻaina, a me ka holoi ʻana. Ma ka ʻatikala aʻe, e ʻike mākou e nānā i nā indexes, transactions, JOINs, TTL directives, a me JSON-based database design.

He aha ka ʻokoʻa ma waena o SQL a me NoSQL?

Hoʻonui ka ʻikepili SQL i ka maʻalahi o ka noi ma o ka ACID transactional guarantees, a me ko lākou hiki ke nīnau i ka ʻikepili me ka hoʻohana ʻana i nā JOIN ma nā ala i manaʻo ʻole ʻia ma luna o nā hiʻohiʻona ʻikepili relational maʻamau.

Hāʻawi ʻia i kā lākou hoʻolālā monolithic/node hoʻokahi a me ka hoʻohana ʻana i kahi kumu hoʻohālike haku-kauā no ka redundancy, nele nā ​​ʻikepili SQL kuʻuna ʻelua mau hiʻohiʻona nui - linear write scalability (ʻo ia hoʻi. ʻO ia ke ʻano o ka nui o ka ʻikepili i loaʻa ʻaʻole hiki ke ʻoi aku ma mua o ka helu helu helu kiʻekiʻe o hoʻokahi node. Eia kekahi, pono e noʻonoʻo ʻia kekahi nalowale o ka ʻikepili no ka hoʻomanawanui hewa (ma kahi hoʻolālā like ʻole). Pono ʻoe e hoʻomanaʻo ʻaʻole i ʻike ʻia nā hana hou i ke kope kauā. He mea paʻakikī hoʻi ka hoʻokō ʻana i nā hōʻano hou non-downtime ma nā ʻikepili SQL.

Hāʻawi pinepine ʻia nā ʻikepili NoSQL e ke ʻano, ʻo ia hoʻi. i loko o ia mau mea, ua māhele ʻia ka ʻikepili i nā ʻāpana a puʻunaue ʻia ma nā nodes. Pono lākou i ka denormalization. 'O ia ho'i, pono e kope 'ia ka 'ikepili i ho'okomo 'ia e pane i nā noi kiko'ī āu e ho'ouna ai. ʻO ka pahuhopu holoʻokoʻa ka loaʻa ʻana o ka hana kiʻekiʻe ma ka hōʻemi ʻana i ka nui o nā shards i loaʻa i ka wā heluhelu. Hōʻike kēia e koi ʻo NoSQL iā ʻoe e hoʻohālike i kāu mau nīnau, ʻoiai koi ʻo SQL iā ʻoe e hoʻohālike i kāu ʻikepili.

Hoʻokumu ʻo NoSQL i ka loaʻa ʻana o ka hana kiʻekiʻe i loko o kahi puʻupuʻu puʻupuʻu a ʻo ia ke kumu kumu kumu no ka nui o nā kālepa hoʻolālā waihona waihona e komo pū ana me ka nalowale o ke kālepa ACID, JOINs, a me nā ʻōlelo kuhikuhi lua honua.

Aia kekahi hoʻopaʻapaʻa ʻoiai ʻo ka ʻikepili NoSQL e hāʻawi i ka scalability kākau laina a me ka hoʻomanawanui hewa kiʻekiʻe, ʻo ka nalowale o nā hōʻoia transactional e kūpono ʻole iā lākou no ka ʻikepili koʻikoʻi.

Hōʻike ka papa ma lalo i ka ʻokoʻa o ka hoʻohālikelike ʻikepili ma NoSQL mai SQL.

Nā Kuleana Hoʻolālā Pūnaewele - Hoʻohālikelike i ka PostgreSQL, Cassandra a me MongoDB

SQL a me NoSQL: No ke aha e pono ai ʻelua?

ʻO nā noi honua maoli me nā heluna nui o nā mea hoʻohana, e like me Amazon.com, Netflix, Uber, a me Airbnb, ua hana ʻia me ka hana paʻakikī a me nā hana he nui. No ka laʻana, pono e mālama i kahi palapala e-commerce e like me Amazon.com e mālama i ka ʻikepili māmā a koʻikoʻi e like me ka ʻike mea hoʻohana, nā huahana, nā kauoha, nā invoices, me nā ʻikepili koʻikoʻi a liʻiliʻi e like me nā loiloi huahana, nā leka kākoʻo , ka hana mea hoʻohana, nā manaʻo hoʻohana a me nā manaʻo. Ma keʻano maʻamau, hilinaʻi kēia mau noi ma kahi liʻiliʻi hoʻokahi waihona SQL me ka liʻiliʻi hoʻokahi waihona NoSQL. Ma nā ʻōnaehana cross-regional a me ka honua holoʻokoʻa, hoʻohana ʻia kahi waihona NoSQL ma ke ʻano he geo-distributed cache no ka ʻikepili i mālama ʻia ma kahi kumu hilinaʻi SQL database e holo ana ma kahi ʻāpana.

Pehea e hui pū ai ʻo YugaByte DB iā SQL a me NoSQL?

Hoʻokumu ʻia ma luna o kahi ʻenekini hoʻopaʻa ʻana i ka log-oriented, auto-sharding, sharded distributed consensus replication a me ACID distributed transactions (hoʻoulu ʻia e Google Spanner), ʻo YugaByte DB ʻo ia ka ʻikepili kumu wehe mua o ka honua i hoʻohālikelike ʻia me NoSQL (Cassandra & Redis) a SQL (PostgreSQL). E like me ka mea i hōʻike ʻia ma ka papa ma lalo nei, YCQL, ka YugaByte DB API e pili ana me Cassandra, hoʻohui i nā manaʻo o nā hana ACID hoʻokahi a me nā kī nui a me nā helu helu lua honua i ka NoSQL API, a laila e hoʻomaka ai i ke au o nā ʻikepili NoSQL transactional. Hoʻohui hou, YCQL, ka YugaByte DB API kūpono me PostgreSQL, hoʻohui i nā manaʻo o ka linear write scaling a me ka hoʻomanawanui hewa ʻana i ka SQL API, e lawe mai ana i nā ʻikepili SQL i hāʻawi ʻia i ka honua. No ka mea he transactional ʻo YugaByte DB, hiki ke hoʻohana ʻia ka NoSQL API i ka pōʻaiapili o ka ʻikepili koʻikoʻi.

Nā Kuleana Hoʻolālā Pūnaewele - Hoʻohālikelike i ka PostgreSQL, Cassandra a me MongoDB

E like me ka mea i hōʻike mua ʻia ma ka ʻatikala "Ke hoʻolauna nei iā YSQL: He API SQL i hoʻokaʻawale ʻia ʻo PostgreSQL no YugaByte DB", ʻo ka koho ma waena o SQL a i ʻole NoSQL ma YugaByte DB e hilinaʻi nui ʻia i nā hiʻohiʻona o ka haʻahaʻa hana.

  • Inā ʻo kāu haʻahaʻa hana mua he mau kī nui JOIN, a laila, i ke koho ʻana iā YSQL, e hoʻomaopopo ʻoe hiki ke puʻunaue ʻia kāu mau kī ma nā node he nui, e hopena i ka latency kiʻekiʻe a/a i ʻole ka haʻahaʻa haʻahaʻa ma mua o NoSQL.
  • A i ʻole, e koho i kekahi o nā API NoSQL ʻelua, me ka hoʻomanaʻo e loaʻa iā ʻoe ka hana ʻoi aku ka maikaʻi ma muli o nā nīnau i lawelawe ʻia mai hoʻokahi node i ka manawa. Hiki i ka YugaByte DB ke lawelawe ma ke ʻano he ʻikepili hana hoʻokahi no ka honua maoli, nā noi paʻakikī e pono e hoʻokele i nā hana he nui i ka manawa like.

Hoʻokumu ʻia ke keʻena hoʻohālike ʻikepili ma ka ʻāpana aʻe ma luna o PostgreSQL a me Cassandra API kūpono ʻo YugaByte DB ʻikepili, e kū'ē ana i nā ʻikepili maoli. Hoʻoikaika kēia ala i ka maʻalahi o ka launa pū ʻana me ʻelua API like ʻole (ma nā awa ʻelua ʻokoʻa) o ka pūʻulu waihona waihona like, e kū'ē i ka hoʻohana ʻana i nā pūʻulu kūʻokoʻa o nā waihona ʻikepili ʻelua.
Ma nā ʻāpana aʻe, e nānā mākou i ke keʻena hoʻohālike ʻikepili e hōʻike i nā ʻokoʻa a me kekahi o nā mea maʻamau o nā ʻikepili i uhi ʻia.

Hale Hana Hoʻohālike Ikepili

Hoʻokomo ʻikepili

Hāʻawi ʻia i ka manaʻo nui i ka hoʻolālā hoʻohālike ʻikepili (ma mua o ka hoʻolālā hoʻonohonoho paʻakikī), e hoʻokomo mākou i nā ʻikepili i loko o nā pahu Docker ma ka mīkini kūloko a laila e launa pū me lākou me ka hoʻohana ʻana i kā lākou mau laina kauoha.

PostgreSQL & Cassandra pili i ka waihona YugaByte DB

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

ʻO MongoDB

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

Ke komo laina kauoha

E hoʻopili kākou i nā ʻikepili me ka hoʻohana ʻana i ka shell line command no nā API pili.

PostgreSQL

psql he pūpū laina kauoha no ka launa pū ʻana me PostgreSQL. No ka maʻalahi o ka hoʻohana ʻana, hele mai ʻo YugaByte DB me psql pololei ma ka waihona bin.

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

Cassandra

cqlsh he pūpū laina kauoha no ka launa pū ʻana me Cassandra a me kāna mau ʻikepili kūpono ma o CQL (Cassandra Query Language). No ka maʻalahi o ka hoʻohana, hele mai ʻo YugaByte DB me cqlsh i ka papa kuhikuhi bin.
E hoʻomaopopo ua hoʻoikaika ʻia ʻo CQL e SQL a loaʻa nā manaʻo like o nā papa, nā lālani, nā kolamu a me nā kuhikuhi. Eia naʻe, ma ke ʻano he ʻōlelo NoSQL, hoʻohui ia i kekahi mau palena, ʻo ka hapa nui a mākou e uhi ai i nā ʻatikala ʻē aʻe.

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

ʻO MongoDB

ʻo Mongo he pūpū laina kauoha no ka launa pū ʻana me MongoDB. Hiki ke loaʻa iā ia ma ka papa kuhikuhi bin o ka hoʻonohonoho MongoDB.

docker exec -it my-mongo bash 
cd bin
mongo

Hana i papaʻaina

I kēia manawa hiki iā mākou ke launa pū me ka waihona e hana i nā hana like ʻole me ka hoʻohana ʻana i ka laina kauoha. E hoʻomaka kākou ma ka hana ʻana i papa e mālama ai i nā ʻike e pili ana i nā mele i kākau ʻia e nā mea pena like ʻole. He ʻāpana paha kēia mau mele o kahi album. ʻO nā hiʻohiʻona koho no kahi mele ka makahiki o ka hoʻokuʻu ʻana, ke kumu kūʻai, ke ʻano a me ka helu. Pono mākou e helu no nā ʻano ʻē aʻe e pono ai i ka wā e hiki mai ana ma o ke kahua "tags". Hiki iā ia ke mālama i nā ʻikepili semi-structured ma ke ʻano o nā hui waiwai kī.

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

ʻO ka hana ʻana i kahi papaʻaina ma Cassandra ua like loa me PostgreSQL. ʻO kekahi o nā ʻokoʻa nui ʻo ka nele o nā kaohi pono (e like me NOT NULL), akā ʻo kēia ke kuleana o ka noi, ʻaʻole ka waihona NoSQL.. ʻO ke kī mua he kī pākī (ke kolamu Artist ma ka laʻana ma lalo) a me kahi pūʻulu kolamu hui pū (ke kolamu SongTitle ma ka laʻana ma lalo). Hoʻoholo ke kī pākī i ka ʻāpana/shard e hoʻokomo ʻia ai ka lālani, a hōʻike nā kolamu clustering pehea e hoʻonohonoho ʻia ai ka ʻikepili i loko o ka shard o kēia manawa.

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

ʻO MongoDB

Hoʻonohonoho ʻo MongoDB i nā ʻikepili i loko o nā waihona (Database) (e like me Keyspace ma Cassandra), kahi i loaʻa ai nā Kohi (e like me nā papa) i loaʻa nā Palapala (e like me nā lālani i ka papaʻaina). Ma MongoDB, ʻaʻohe pono e wehewehe i kahi schema mua. Hui "hoʻohana i ka waihona", i hōʻike ʻia ma lalo nei, hoʻopuka koke i ka waihona ma ke kelepona mua a hoʻololi i ka pōʻaiapili no ka ʻikepili i hana hou ʻia. ʻAʻole pono e hana maʻalahi nā hōʻiliʻili; hana ʻia lākou, ke hoʻohui wale ʻoe i ka palapala mua i kahi hōʻiliʻili hou. E hoʻomaopopo i ka hoʻohana ʻana o MongoDB i ka ʻikepili hoʻāʻo ma ke ʻano maʻamau, no laila, e holo ma luna o kēlā me kēia hana pae ʻohi me ka ʻole o ka wehewehe ʻana i kahi waihona kikoʻī.

use myNewDatabase;

Loaʻa ka ʻike e pili ana i kahi pākaukau
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'};

ʻO MongoDB

use myNewDatabase;
show collections;

Ke hoʻokomo nei i ka ʻikepili i loko o ka pākaukau
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

ʻŌlelo holoʻokoʻa INSERT ma Cassandra ua like loa me ka PostgreSQL. Eia naʻe, aia kekahi ʻokoʻa nui i ka semantics. Ma Cassandra INSERT he hana maoli UPSERT, kahi i hoʻohui ʻia ai nā waiwai hope i ka lālani inā aia ka lālani.

Ua like ka helu ʻikepili me PostgreSQL INSERT kiekie

.

ʻO MongoDB

ʻOiai ʻo MongoDB kahi waihona NoSQL e like me Cassandra, ʻaʻohe mea maʻamau o kāna hana hoʻokomo me ke ʻano semantic o Cassandra. Ma MongoDB hoʻokomo () ʻaʻohe manawa kūpono UPSERT, e like me PostgreSQL. Hoʻohui i ka ʻikepili paʻamau me ka ʻole _idspecified e hoʻokomo i kahi palapala hou i ka hōʻiliʻili.

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

Nīnau pākaukau

Malia paha ʻo ka ʻokoʻa koʻikoʻi ma waena o SQL a me NoSQL e pili ana i ke kūkulu ʻana i ka nīnau, ʻo ia ka ʻōlelo i hoʻohana ʻia FROM и WHERE. Hāʻawi ʻo SQL ma hope o ka ʻōlelo FROM koho i nā papa he nui, a me ka ʻōlelo me WHERE hiki ke paʻakikī (me nā hana JOIN ma waena o nā papa). Eia naʻe, makemake ʻo NoSQL e kau i kahi palena koʻikoʻi FROM, a hana wale me hoʻokahi papaʻaina i kuhikuhi ʻia, a ma WHERE, pono e ho'ākāka 'ia ke kī mua. Hoʻopili kēia i ka pana hana NoSQL a mākou i kamaʻilio mua ai. ʻO kēia makemake e alakaʻi i kēlā me kēia hōʻemi hiki i kēlā me kēia hui cross-tabular a me cross-key. Hiki iā ia ke hoʻolauna i kahi lohi nui i ke kamaʻilio inter-node i ka pane ʻana i kahi noi a no laila ʻoi aku ka maikaʻi o ka pale ʻana i ka laulā. No ka laʻana, koi ʻo Cassandra i nā nīnau e kaupalena ʻia i kekahi mau mea hana (wale =, IN, <, >, =>, <=) ma nā kī ʻāpana, koe wale nō ke noi ʻana i kahi helu helu lua (ʻo ka = operator wale nō i ʻae ʻia ma aneʻi).

PostgreSQL

Ma lalo iho nei ʻekolu laʻana o nā nīnau i hiki ke hoʻokō maʻalahi ʻia e kahi waihona SQL.

  • Hōʻike i nā mele a pau a kekahi mea pena;
  • Hōʻike i nā mele a pau a ka mea pena i kūpono i ka hapa mua o ke poʻo inoa;
  • Hōʻike i nā mele a pau a kekahi mea pena i loaʻa kekahi huaʻōlelo ma ke poʻo inoa a he kumu kūʻai ma lalo o 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

ʻO nā nīnau PostgreSQL i helu ʻia ma luna, ʻo ka mea mua wale nō e hana ʻole ʻia ma Cassandra, ʻoiai ka mea hoʻohana. LIKE ʻAʻole hiki ke hoʻohana ʻia i nā kolamu clustering e like me SongTitle. I kēia hihia, ʻae ʻia nā mea hana = и 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;

ʻO MongoDB

E like me ka hōʻike ʻana i nā hiʻohiʻona mua, ʻo ke ala nui no ka hana ʻana i nā nīnau ma MongoDB ʻo ia db.collection.find(). Loaʻa i kēia ʻano ka inoa o ka hōʻiliʻili (music ma ka laʻana ma lalo), no laila, pāpā ʻia ka nīnau ʻana i nā hōʻiliʻili he nui.

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

Heluhelu i nā lālani a pau o ka pākaukau

ʻO ka heluhelu ʻana i nā lālani a pau he hihia kūikawā wale nō o ke ʻano nīnau a mākou i nānā mua ai.

PostgreSQL

SELECT * 
FROM Music;

Cassandra

E like me ka laʻana PostgreSQL ma luna.

ʻO MongoDB

db.music.find( {} );

Hoʻoponopono i ka ʻikepili ma kahi pākaukau

PostgreSQL

Hāʻawi ʻo PostgreSQL i nā ʻōlelo kuhikuhi UPDATE e hoʻololi i ka ʻikepili. ʻAʻohe ona manawa UPSERT, no laila e hāʻule kēia ʻōlelo inā ʻaʻole ka lālani i loko o ka waihona.

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

Cassandra

Ua loaʻa iā Cassandra UPDATE like me PostgreSQL. UPDATE loaʻa nā ʻōlelo like UPSERT, like INSERT.

E like me ka laʻana PostgreSQL ma luna.

ʻO MongoDB
Ka lawelawe hōʻano () i MongoDB hiki ke hoʻopau piha i kahi palapala i loaʻa a i ʻole e hoʻonui i kekahi mau kahua wale nō. ʻO ka mea paʻamau, hoʻohou wale ia i hoʻokahi palapala me nā semantics i pio UPSERT. Hoʻohou i nā palapala he nui a me nā ʻano like UPSERT hiki ke hoʻohana ʻia ma ke kau ʻana i nā hae hou no ka hana. No ka laʻana, ma ka laʻana ma lalo nei, hoʻonui ʻia ke ʻano o kahi mea pena kiʻi ma muli o kāna mele.

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

Ke wehe nei i ka ʻikepili mai kahi pākaukau

PostgreSQL

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

Cassandra

E like me ka laʻana PostgreSQL ma luna.

ʻO MongoDB

He ʻelua ʻano hana ʻo MongoDB e holoi i nā palapala − deleteOne() /deleteMany() и hemo (). Holoi nā ʻano ʻelua i nā palapala akā hoʻihoʻi i nā hopena ʻokoʻa.

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

Holoi i kahi papaʻaina

PostgreSQL

DROP TABLE Music;

Cassandra

E like me ka laʻana PostgreSQL ma luna.

ʻO MongoDB

db.music.drop();

hopena

ʻO ka hoʻopaʻapaʻa e pili ana i ke koho ʻana ma waena o SQL a me NoSQL ua ʻoi aku ma mua o 10 mau makahiki. ʻElua mau mea nui o kēia hoʻopaʻapaʻa: ʻenehana ʻenekini waihona (monolithic, transactional SQL vs distributed, non-transactional NoSQL) a me ka hoʻolālā hoʻolālā ʻikepili (ka hoʻohālike i kāu ʻikepili ma SQL me ka hoʻohālike ʻana i kāu mau nīnau ma NoSQL).

Me kahi waihona transactional i hoʻolaha ʻia e like me YugaByte DB, hiki ke hoʻomaha maʻalahi ka hoʻopaʻapaʻa e pili ana i ka hoʻolālā waihona. I ka lilo ʻana o nā waihona ʻikepili i ʻoi aku ka nui ma mua o ka mea hiki ke kākau ʻia i ka node hoʻokahi, pono ke ʻano hoʻolālā hoʻolaha piha e kākoʻo ana i ka scalability kākau laina me ka sharding / rebalancing maʻalahi.

Eia kekahi, e like me ka mea i ʻōlelo ʻia ma kekahi o nā ʻatikala Google Kapua, Hoʻohana ʻia nā hana hoʻolālā kūʻokoʻa, paʻa paʻa i kēia manawa, i hoʻohana ʻia e hāʻawi i ka agility hoʻomohala ʻoi aku ka maikaʻi ma mua o ka hoʻolālā ʻole ʻana, , nā hale hana like ʻole.

Ke hoʻi mai nei i ka kūkākūkā hoʻolālā waihona, kūpono ke ʻōlelo ʻana he pono nā ala hoʻolālā ʻelua (SQL a me NoSQL) no kēlā me kēia noi paʻakikī o ka honua. ʻO ka SQL "data modeling" e hiki ai i nā mea hoʻomohala ke hoʻokō maʻalahi i ka hoʻololi ʻana i nā koi ʻoihana, aʻo ka NoSQL "query modelling" ala e hiki ai i nā mea hoʻomohala like ke hana ma nā puke nui o ka ʻikepili me ka latency haʻahaʻa a me ka throughput kiʻekiʻe. ʻO ia ke kumu i hāʻawi ai ʻo YugaByte DB i nā SQL a me NoSQL API i kahi kumu maʻamau, ma mua o ka hoʻolaha ʻana i kekahi o nā ala. Eia kekahi, ma ka hāʻawi ʻana i ka launa pū me nā ʻōlelo ʻikepili kaulana e like me PostgreSQL a me Cassandra, ua hōʻoia ʻo YugaByte DB ʻaʻole pono nā mea hoʻomohala e aʻo i ka ʻōlelo ʻē aʻe e hana me kahi mīkini waihona waihona i hoʻolaha ʻia.

Ma kēia ʻatikala, ua nānā mākou i ka ʻokoʻa o nā waihona hoʻolālā waihona ma waena o PostgreSQL, Cassandra, a me MongoDB. I nā ʻatikala e hiki mai ana, e luʻu mākou i nā manaʻo hoʻolālā holomua e like me nā kuhikuhi, nā kālepa, nā JOIN, nā kuhikuhi TTL, a me nā palapala JSON.

Makemake mākou iā ʻoe i kahi hoʻomaha maikaʻi o ka hopena pule a kono iā ʻoe e webinar manuahi, e malama ia ana ma ka la 14 o Mei.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka