Database Design Fundamentals - Sib piv PostgreSQL, Cassandra, thiab MongoDB

Nyob zoo, phooj ywg. Ua ntej tawm mus rau qhov thib ob ntawm lub Tsib Hlis cov hnub so, peb qhia rau koj cov ntaub ntawv uas peb tau txhais nyob rau hauv kev cia siab ntawm lub community launch ntawm ib tug tshiab kwj ntawm chav kawm "Kev sib raug zoo DBMS".

Database Design Fundamentals - Sib piv PostgreSQL, Cassandra, thiab MongoDB

Cov neeg tsim daim ntawv thov siv sijhawm ntau los sib piv ntau cov ntaub ntawv ua haujlwm los xaiv qhov zoo tshaj plaws haum rau cov haujlwm uas tau npaj tseg. Cov kev xav tau tuaj yeem suav nrog kev tsim cov ntaub ntawv yooj yim, kev lees paub kev lag luam, kev nyeem ntawv / sau ntawv, kev ntsuas kab rov tav, thiab kev ua txhaum cai. Kev lig kev cai, kev xaiv pib nrog pawg database, SQL lossis NoSQL, txij li txhua pawg nthuav qhia meej txog kev lag luam tawm. Kev ua haujlwm siab nyob rau hauv cov nqe lus ntawm qis latency thiab high throughput yog feem ntau pom tias tsis muaj kev lag luam tawm thiab yog li ntawd tseem ceeb rau txhua tus qauv database.

Lub hom phiaj ntawm tsab xov xwm no yog los pab cov neeg tsim daim ntawv thov xaiv txoj cai ntawm SQL thiab NoSQL nyob rau hauv cov ntsiab lus ntawm daim ntawv thov cov ntaub ntawv qauv. Peb yuav saib ib qho SQL database, uas yog PostgreSQL, thiab ob NoSQL databases, Cassandra thiab MongoDB, los npog cov hauv paus ntawm database tsim, xws li tsim cov ntxhuav, populating lawv, nyeem cov ntaub ntawv los ntawm ib lub rooj, thiab tshem tawm nws. Nyob rau hauv tsab xov xwm tom ntej, peb yuav nco ntsoov saib cov indexes, muas, JOINs, TTL cov lus qhia, thiab JSON-based database tsim.

Qhov txawv ntawm SQL thiab NoSQL yog dab tsi?

SQL databases nce kev yooj yim ntawm daim ntawv thov los ntawm ACID kev lag luam lav, nrog rau lawv lub peev xwm los nug cov ntaub ntawv siv JOINs hauv txoj kev npaj txhij txog nyob rau sab saum toj ntawm cov qauv kev sib raug zoo uas twb muaj lawm.

Muab lawv cov monolithic / ib leeg-node architecture thiab siv tus qauv-tus qhev replication rau redundancy, tsoos SQL databases tsis muaj ob yam tseem ceeb - linear sau scalability (piv txwv li tsis siv neeg muab faib hla ntau lub nodes) thiab tsis siv neeg / xoom cov ntaub ntawv poob. Qhov no txhais tau hais tias tus nqi ntawm cov ntaub ntawv tau txais tsis tuaj yeem tshaj qhov sau siab tshaj plaws ntawm ib qho ntawm ib qho. Tsis tas li ntawd, qee cov ntaub ntawv poob ib ntus yuav tsum raug coj mus rau hauv tus account hauv kev ua txhaum cai (hauv kev sib koom ua ke-tsis muaj dab tsi). Ntawm no koj yuav tsum nco ntsoov tias kev cog lus tsis ntev los no tseem tsis tau muaj kev cuam tshuam rau hauv daim ntawv qhev. Tsis yog-downtime hloov tshiab kuj nyuaj rau ua tiav hauv SQL databases.

NoSQL databases feem ntau yog faib los ntawm xwm, i.e. nyob rau hauv lawv, cov ntaub ntawv tau muab faib ua ntu thiab faib thoob plaws ntau cov nodes. Lawv xav tau denormalization. Qhov no txhais tau hais tias cov ntaub ntawv nkag yuav tsum tau theej ob peb zaug los teb cov lus thov tshwj xeeb uas koj xa tuaj. Lub hom phiaj tag nrho yog kom tau txais kev ua tau zoo los ntawm kev txo tus naj npawb ntawm cov shards muaj nyob rau thaum nyeem. Qhov no txhais tau tias NoSQL xav kom koj ua qauv koj cov lus nug, thaum SQL xav kom koj ua qauv koj cov ntaub ntawv.

NoSQL tsom mus rau kev ua tiav kev ua tau zoo hauv pawg faib thiab qhov no yog qhov laj thawj rau ntau qhov kev sib koom ua lag luam uas suav nrog ACID kev poob lag luam, JOINs, thiab cov kev ntsuas thoob ntiaj teb thib ob.

Muaj kev sib cav hais tias thaum NoSQL databases muab cov kab ntawv sau scalability thiab siab ua txhaum, qhov poob ntawm kev lag luam lav ua rau lawv tsis tsim nyog rau lub hom phiaj tseem ceeb cov ntaub ntawv.

Cov lus hauv qab no qhia tau hais tias cov ntaub ntawv qauv hauv NoSQL txawv li cas ntawm SQL.

Database Design Fundamentals - Sib piv PostgreSQL, Cassandra, thiab MongoDB

SQL thiab NoSQL: Vim li cas ob qho tib si xav tau?

Cov ntawv thov tiag tiag hauv ntiaj teb nrog coob tus neeg siv, xws li Amazon.com, Netflix, Uber, thiab Airbnb, tau ua haujlwm nrog kev ua haujlwm nyuaj, ntau yam haujlwm. Piv txwv li, daim ntawv thov kev lag luam e-lag luam zoo li Amazon.com yuav tsum khaws cov ntaub ntawv hnyav, cov ntaub ntawv tseem ceeb xws li cov ntaub ntawv siv, cov khoom, kev txiav txim, cov ntawv xa nyiaj, nrog rau cov ntaub ntawv hnyav, tsis tshua muaj siab xws li kev tshuaj xyuas cov khoom, cov lus txhawb nqa, cov neeg siv khoom, cov neeg siv tshuaj xyuas thiab cov lus pom zoo. Lawm, cov ntawv thov no cia siab rau tsawg kawg ib qho SQL database nrog rau tsawg kawg ib NoSQL database. Hauv cov kab ke hauv cheeb tsam thiab thoob ntiaj teb, NoSQL database ua haujlwm raws li thaj chaw faib khoom rau cov ntaub ntawv khaws cia hauv qhov chaw ntseeg siab SQL database khiav hauv ib cheeb tsam.

YugaByte DB ua ke SQL thiab NoSQL li cas?

Ua rau ntawm lub cav-taw qhia kev sib xyaw ua ke, nws pib-sharding, sharded faib kev pom zoo rov ua dua thiab ACID faib kev lag luam (kev tshoov siab los ntawm Google Spanner), YugaByte DB yog lub ntiaj teb thawj qhov chaw qhib database uas yog ib txhij sib haum nrog NoSQL (Cassandra & Redis ) thiab SQL (PostgreSQL). Raws li pom hauv cov lus hauv qab no, YCQL, YugaByte DB API tau sib xws nrog Cassandra, ntxiv cov ntsiab lus ntawm ib qho thiab ntau qhov tseem ceeb ACID kev lag luam thiab thoob ntiaj teb kev ntsuas thib ob rau NoSQL API, yog li coj mus rau lub sijhawm ntawm kev hloov pauv NoSQL databases. Tsis tas li ntawd, YCQL, YugaByte DB API tau tshaj nrog PostgreSQL, ntxiv cov ntsiab lus ntawm kev sau ntawv sau thiab tsis siv neeg ua txhaum cai rau SQL API, nqa cov ntaub ntawv SQL faib rau lub ntiaj teb. Vim tias YugaByte DB yog kev hloov pauv hauv qhov xwm txheej, NoSQL API tam sim no tuaj yeem siv rau hauv cov ntsiab lus ntawm lub hom phiaj tseem ceeb cov ntaub ntawv.

Database Design Fundamentals - Sib piv PostgreSQL, Cassandra, thiab MongoDB

Raws li tau hais dhau los hauv kab lus "Qhia YSQL: A PostgreSQL Compatible Distributed SQL API rau YugaByte DB", kev xaiv ntawm SQL lossis NoSQL hauv YugaByte DB nyob ntawm tag nrho cov yam ntxwv ntawm cov haujlwm hauv qab no:

  • Yog tias koj lub luag haujlwm tseem ceeb yog ntau qhov tseem ceeb JOIN kev ua haujlwm, tom qab ntawd thaum xaiv YSQL, nkag siab tias koj cov yuam sij yuav raug faib thoob plaws ntau qhov ntawm, ua rau muaj kev latency siab dua thiab / lossis qis dua li NoSQL.
  • Txwv tsis pub, xaiv ob qho ntawm NoSQL APIs, nco ntsoov tias koj yuav tau txais kev ua tau zoo dua vim yog cov lus nug tau txais los ntawm ib qho ntawm ib lub sijhawm. YugaByte DB tuaj yeem ua haujlwm ua ib qho chaw ua haujlwm rau lub ntiaj teb tiag tiag, cov ntawv thov nyuaj uas xav tau los tswj ntau cov haujlwm ua haujlwm ib txhij.

Cov ntaub ntawv ua qauv kuaj hauv tshooj tom ntej yog raws li PostgreSQL thiab Cassandra API tau tshaj YugaByte DB databases, tsis zoo li cov ntaub ntawv ib txwm muaj. Txoj hauv kev no qhia txog qhov yooj yim ntawm kev cuam tshuam nrog ob qhov sib txawv APIs (ntawm ob qhov chaw sib txawv) ntawm tib lub chaw khaws ntaub ntawv, tsis yog siv cov pawg ywj pheej ntawm ob qhov sib txawv databases.
Hauv cov ntu hauv qab no, peb yuav ua tib zoo saib cov ntaub ntawv ua qauv kuaj pom qhov sib txawv thiab qee qhov sib xws ntawm cov ntaub ntawv khaws cia.

Data Modeling Laboratory

Database installation

Muab qhov tseem ceeb ntawm cov qauv tsim cov ntaub ntawv (tshwj tsis yog cov txheej txheem xa tawm nyuaj), peb yuav teeb tsa cov ntaub ntawv hauv Docker ntim ntawm lub tshuab hauv zos thiab tom qab ntawd cuam tshuam nrog lawv siv lawv cov kab lus hais kom ua.

PostgreSQL & Cassandra tau tshaj 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

Hais kom ua kab nkag

Cia peb txuas mus rau cov ntaub ntawv siv cov kab hais kom ua lub plhaub rau cov APIs sib xws.

PostgreSQL

psql yog lub plhaub kab lus hais kom cuam tshuam nrog PostgreSQL. Rau kev yooj yim ntawm kev siv, YugaByte DB los nrog psql txoj cai hauv cov ntawv tais ceev tseg.

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

Cassandra

cqlsh yog lub plhaub kab lus txib rau kev cuam tshuam nrog Cassandra thiab nws cov ntaub ntawv sib xws ntawm CQL (Cassandra Query Language). Rau kev yooj yim ntawm kev siv, YugaByte DB los nrog cqlsh hauv phau ntawv teev khoom bin.
Nco ntsoov tias CQL tau txais kev tshoov siab los ntawm SQL thiab muaj cov ntsiab lus zoo sib xws ntawm cov ntxhuav, kab, kab thiab qhov ntsuas. Txawm li cas los xij, raws li NoSQL lus, nws ntxiv qee qhov kev txwv, feem ntau ntawm peb kuj tseem yuav npog hauv lwm cov ntawv.

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

MongoDB

mongo yog lub plhaub kab hais kom ua rau kev cuam tshuam nrog MongoDB. Nws tuaj yeem pom hauv phau ntawv teev npe ntawm MongoDB installation.

docker exec -it my-mongo bash 
cd bin
mongo

Tsim ib lub rooj

Tam sim no peb tuaj yeem cuam tshuam nrog cov ntaub ntawv los ua ntau yam haujlwm siv cov kab hais kom ua. Cia peb pib los ntawm kev tsim lub rooj uas khaws cov ntaub ntawv hais txog cov nkauj sau los ntawm cov kws ua yeeb yam sib txawv. Cov nkauj no yuav yog ib feem ntawm ib qho album. Tsis tas li kev xaiv tus cwj pwm rau ib zaj nkauj yog xyoo ntawm kev tso tawm, tus nqi, ib hom ntawv thiab kev ntaus nqi. Peb yuav tsum suav rau cov yam ntxwv ntxiv uas yuav xav tau yav tom ntej los ntawm "tags" teb. Nws tuaj yeem khaws cov ntaub ntawv semi-structured nyob rau hauv daim ntawv ntawm tus nqi tseem ceeb.

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

Tsim ib lub rooj hauv Cassandra zoo ib yam li PostgreSQL. Ib qho ntawm qhov sib txawv tseem ceeb yog qhov tsis muaj kev ncaj ncees (piv txwv li TSIS NULL), tab sis qhov no yog lub luag haujlwm ntawm daim ntawv thov, tsis yog NoSQL database.. Tus yuam sij tseem ceeb muaj qhov tseem ceeb muab faib (Kem Artist kem hauv qhov piv txwv hauv qab no) thiab cov kab sib txuas (Kem SongTitle hauv qhov piv txwv hauv qab no). Tus yuam sij muab faib txiav txim siab seb qhov twg muab faib / shard kab yuav tsum tau muab tso rau hauv, thiab cov kab sib txuas qhia seb cov ntaub ntawv yuav tsum tau teeb tsa li cas hauv cov shard tam sim no.

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 teeb tsa cov ntaub ntawv rau hauv cov ntaub ntawv (Database) (zoo ib yam li Keyspace hauv Cassandra), qhov twg muaj Cov Sau (zoo ib yam li cov ntxhuav) uas muaj Cov Ntaub Ntawv (zoo ib yam li kab hauv ib lub rooj). Hauv MongoDB, nws yog qhov tseem ceeb tsis tas yuav txhais qhov pib schema. Pab neeg "siv database", qhia hauv qab no, instantiates lub database ntawm thawj hu thiab hloov cov ntsiab lus rau cov tshiab tsim database. Txawm tias cov ntawv sau tsis tas yuav tsim kom meej meej; lawv raug tsim los, tsuas yog thaum koj ntxiv thawj daim ntawv rau ib phau ntawv tshiab. Nco ntsoov tias MongoDB siv cov ntaub ntawv xeem los ntawm lub neej ntawd, yog li txhua qhov kev sau qib ua haujlwm yam tsis tau qhia meej txog cov ntaub ntawv tshwj xeeb yuav khiav ntawm nws los ntawm lub neej ntawd.

use myNewDatabase;

Tau txais cov ntaub ntawv hais txog lub rooj
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;

Sau cov ntaub ntawv rau hauv lub rooj
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

Zuag qhia tag nrho INSERT hauv Cassandra zoo li zoo ib yam li hauv PostgreSQL. Txawm li cas los xij, muaj qhov sib txawv loj hauv semantics. Hauv Cassandra INSERT yog qhov ua haujlwm UPSERT, qhov twg cov nqi kawg yog ntxiv rau kab yog kab twb muaj lawm.

Cov ntaub ntawv nkag yog zoo ib yam li PostgreSQL INSERT ntau dua

.

MongoDB

Txawm hais tias MongoDB yog NoSQL database zoo li Cassandra, nws txoj haujlwm ntxig tsis muaj dab tsi sib xws nrog tus cwj pwm ntawm Cassandra. Hauv MongoDB ntxig () tsis muaj cib fim UPSERT, uas ua rau nws zoo ib yam li PostgreSQL. Ntxiv cov ntaub ntawv default yam tsis muaj _idspecified yuav ua rau kom muaj ib daim ntawv tshiab ntxiv rau qhov sau.

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

Table Query

Tej zaum qhov sib txawv tseem ceeb tshaj plaws ntawm SQL thiab NoSQL hais txog kev tsim cov lus nug yog cov lus siv FROM ΠΈ WHERE. SQL tso cai tom qab qhia FROM xaiv ntau lub rooj, thiab qhia nrog WHERE tuaj yeem yog qhov nyuaj (nrog rau kev ua haujlwm JOIN nruab nrab ntawm cov rooj). Txawm li cas los xij, NoSQL nyiam ua rau muaj kev txwv hnyav rau FROM, thiab ua haujlwm tsuas yog nrog ib lub rooj teev tseg, thiab hauv WHERE, tus yuam sij tseem ceeb yuav tsum tau teev tseg. Qhov no sib txuas rau hauv NoSQL kev ua haujlwm thawb peb tau tham txog ua ntej. Qhov kev ntshaw no ua rau txhua qhov kev txo qis hauv kev sib cuam tshuam ntawm tus ntoo khaub lig thiab qhov tseem ceeb. Nws tuaj yeem qhia txog qhov ncua sij hawm loj hauv kev sib txuas lus sib txuas thaum teb rau qhov kev thov thiab yog li zam tau zoo tshaj plaws. Piv txwv li, Cassandra xav tau cov lus nug kom txwv rau qee tus neeg ua haujlwm (tsuas yog =, IN, <, >, =>, <=) ntawm cov yuam sij muab faib, tshwj tsis yog thaum thov qhov ntsuas thib ob (tsuas yog tus neeg teb xov tooj = tso cai ntawm no).

PostgreSQL

Hauv qab no yog peb qhov piv txwv ntawm cov lus nug uas tuaj yeem ua tau yooj yim los ntawm SQL database.

  • Tso txhua zaj nkauj los ntawm tus kws kos duab;
  • Tso txhua zaj nkauj los ntawm tus kws kos duab uas phim thawj feem ntawm lub npe;
  • Tso tag nrho cov nkauj los ntawm tus kws kos duab uas muaj qee lo lus hauv lub npe thiab muaj tus nqi qis dua 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

Ntawm PostgreSQL cov lus nug saum toj no, tsuas yog thawj tus yuav ua haujlwm tsis hloov hauv Cassandra, txij li tus neeg teb xov tooj LIKE tsis tuaj yeem siv rau pawg pawg xws li SongTitle. Hauv qhov no, tsuas yog cov neeg ua haujlwm raug tso cai = ΠΈ 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

Raws li pom hauv cov piv txwv dhau los, txoj hauv kev tseem ceeb rau kev tsim cov lus nug hauv MongoDB yog db.collection.find(). Txoj kev no qhia meej meej muaj lub npe ntawm cov khoom sau (music nyob rau hauv cov piv txwv hauv qab no), yog li querying ntau collections yog txwv tsis pub.

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

Nyeem tag nrho kab ntawm ib lub rooj

Kev nyeem tag nrho cov kab tsuas yog qhov tshwj xeeb ntawm cov lus nug uas peb tau saib ua ntej.

PostgreSQL

SELECT * 
FROM Music;

Cassandra

Zoo ib yam li PostgreSQL piv txwv saum toj no.

MongoDB

db.music.find( {} );

Kho cov ntaub ntawv hauv ib lub rooj

PostgreSQL

PostgreSQL muab cov lus qhia UPDATE hloov cov ntaub ntawv. Nws tsis muaj cib fim UPSERT, yog li cov lus no yuav ua tsis tau yog tias kab tsis nyob hauv cov ntaub ntawv ntxiv lawm.

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

Cassandra

Cassandra muaj UPDATE zoo ib yam li PostgreSQL. UPDATE muaj ib yam semantics UPSERT, zoo ib yam INSERT.

Zoo ib yam li PostgreSQL piv txwv saum toj no.

MongoDB
Ua haujlwm hloov tshiab () hauv MongoDB tuaj yeem hloov kho cov ntaub ntawv uas twb muaj lawm lossis hloov kho qee thaj chaw. Los ntawm lub neej ntawd, nws tsuas yog hloov kho ib daim ntawv nrog semantics disabled UPSERT. Hloov kho ntau yam ntaub ntawv thiab tus cwj pwm zoo sib xws UPSERT tuaj yeem siv los ntawm kev teeb tsa cov chij ntxiv rau kev ua haujlwm. Piv txwv li, hauv qhov piv txwv hauv qab no, hom ntawm ib tus kws kos duab tshwj xeeb tau hloov kho raws li nws zaj nkauj.

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

Tshem tawm cov ntaub ntawv los ntawm lub rooj

PostgreSQL

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

Cassandra

Zoo ib yam li PostgreSQL piv txwv saum toj no.

MongoDB

MongoDB muaj ob hom kev ua haujlwm kom tshem tawm cov ntaub ntawv βˆ’ deleteOne() /deleteMany() ΠΈ tshem tawm (). Ob hom rho tawm cov ntaub ntawv tab sis xa rov qab cov txiaj ntsig sib txawv.

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

Rho tawm lub rooj

PostgreSQL

DROP TABLE Music;

Cassandra

Zoo ib yam li PostgreSQL piv txwv saum toj no.

MongoDB

db.music.drop();

xaus

Kev sib cav txog kev xaiv ntawm SQL thiab NoSQL tau raging rau ntau tshaj 10 xyoo. Muaj ob qhov tseem ceeb rau qhov kev sib cav no: database engine architecture (monolithic, kev lag luam SQL vs faib, tsis yog kev lag luam NoSQL) thiab database tsim mus kom ze ( qauv koj cov ntaub ntawv hauv SQL vs qauv koj cov lus nug hauv NoSQL).

Nrog rau kev faib khoom lag luam database zoo li YugaByte DB, kev sib cav txog database architecture tuaj yeem yooj yim tso rau so. Raws li cov ntaub ntawv ntim loj dua li qhov tuaj yeem sau rau hauv ib qho ntawm ib qho, ib qho kev faib tawm tag nrho uas txhawb nqa cov ntawv sau scalability nrog tsis siv neeg sharding / rebalancing yuav tsim nyog.

Tsis tas li ntawd, raws li tau hais hauv ib qho ntawm cov kab lus Google huab, Transactional, zoo ib yam architectures yog tam sim no ntau dua, siv los muab kev txhim kho agility zoo dua tsis-transactional, , nws thiaj li zoo ib yam architectures.

Rov qab los rau kev sib tham tsim database, nws yog qhov ncaj ncees hais tias ob qho tib si tsim qauv (SQL thiab NoSQL) yog qhov tsim nyog rau txhua daim ntawv thov hauv ntiaj teb. SQL "cov ntaub ntawv qauv" txoj hauv kev tso cai rau cov neeg tsim khoom kom yooj yim dua kom tau raws li kev hloov pauv kev lag luam, thaum NoSQL "query modeling" txoj hauv kev tso cai rau tib cov neeg tsim khoom ua haujlwm ntawm cov ntaub ntawv loj loj uas tsis tshua muaj latency thiab siab dhau. Nws yog vim li no tias YugaByte DB muab SQL thiab NoSQL APIs hauv ib qho tseem ceeb, tsis yog txhawb nqa ib qho ntawm txoj hauv kev. Tsis tas li ntawd, los ntawm kev muab kev sib raug zoo nrog cov lus nrov database suav nrog PostgreSQL thiab Cassandra, YugaByte DB kom ntseeg tau tias cov neeg tsim khoom tsis tas yuav kawm lwm hom lus los ua haujlwm nrog kev faib tawm, cov ntaub ntawv zoo sib xws.

Hauv tsab xov xwm no, peb tau saib yuav ua li cas database tsim cov ntsiab lus sib txawv ntawm PostgreSQL, Cassandra, thiab MongoDB. Hauv cov ntawv yav tom ntej, peb yuav nkag mus rau hauv cov ntsiab lus tsim qauv zoo xws li kev ntsuas, kev hloov pauv, JOINs, TTL cov lus qhia, thiab JSON cov ntaub ntawv.

Peb xav kom koj so zoo ntawm lub lis piam thiab caw koj mus dawb webinar, uas yuav muaj nyob rau lub Tsib Hlis 14th.

Tau qhov twg los: www.hab.com

Ntxiv ib saib