ααααΆααα½ααα·αααααααα·α αα»ααααα
αΆαα
αααααααΆαααααααααΈααΈαααααααααααααααΆαααα§αααΆ ααΎαα
αααααααααΆαα½αα’αααααΌααααααΆαααααααΎαααΆααααααααααααααΉαααΆααΉαα
αΆααααααΎαααΆαααααΆαααααΈαα
ααΎαααααα·ααααΆ
α’αααα’αα·αααααααααααα·ααΈα
αααΆααααα
αααΎαααΎααααΈααααααααααΌαααααΆααα·ααααααααααα·ααααα·ααΆαααΆα
αααΎαααΎααααΈααααΎαααΎααα½αααααααααα·αααααα»ααα
ααΉαααααα»αααΆαααΆααααααΆαααααααα»αα αααααΌαααΆαα’αΆα
αα½ααααα
αΌαααααΌαα·ααααααααΆαααα ααΆαααΆααΆααααα·ααααα·ααΆα ααααΎαααΆαα’αΆα/ααααα ααΆαααααΎααΆαααααααΆαααααα αα·αααΆαα’ααα±αα
ααααααα α»αα ααΆαααααααΈ αααααΎαα
αΆααααααΎαααΆαα½αααΉαααααααααΌαααααΆααα·αααααα SQL α¬ NoSQL α
αΆααααΆααααΈααααααααΈαα½αααααα αΆαααΈαααα»αααααΆααααααΌαα
αααΆααααΆααα ααΆαα’αα»ααααααααααααα»αααααααααααααΆαααΊααααΆαααΆα αα·ααα·αααααααααα ααΆααΌαα
ααααΌαααΆαααααΎαααΎαααΆααΆαααααΌαααΆαααααα·αααΆαααΆααα½αααΌα α αΎαααΌα
ααααααΆααΆαααΆααααααΆαααααααΆααααΌαααααΆααα·ααααααααααΌααΆαα½αα
αααααααααα’ααααααααααΊααΎααααΈαα½αα’ααααααααΎααααααα·ααΈααααΎααΆαααααΎαααΎαααααΉαααααΌααααΆα SQL αα·α NoSQL αα αααα»αααα·ααααααααΌαα·αααααααααααα·ααΈα ααΎαααΉααα·αα·αααααΎαααΌαααααΆααα·αααααα SQL αα½αααΊ PostgreSQL αα·αααΌαααααΆααα·αααααα NoSQL ααΈαααΊ Cassandra αα·α MongoDB ααΎααααΈααααααααααααΌαααααΆαααααΉαααααΆααα ααΆααΌαααααΆααα·αααααα ααΌα ααΆααΆααααααΎαααΆααΆα ααΆααααα αΌααα½αααΆ α’αΆααα·ααααααααΈααΆααΆα αα·ααα»αααΆα αα αααα»αα’ααααααααααΆαα ααΎαααΉαααααΆααααΆααΎαααααααααα ααααα·ααααα·ααΆα α αΌααα½α ααΆαααααΆα TTL αα·αααΆααα ααΆααΌαααααΆααα·ααααααααα’ααααΎ JSON α
ααΎα’αααΈααΆααΆααα»αααααΆαααΆα SQL αα·α NoSQL?
ααΌαααααΆααα·αααααα SQL αααααΎαααΆααααααααααααααα·ααΈααΆααααααΆαααΆααΆααααα·ααααα·ααΆα ACID ααααΌα ααΆαααααααΆααααααα½ααααααα»αααΆαααΆααα½ααα·αααααααααααααΎ JOINs αα αααα»ααα·ααΈααααα·αααααΉααα»ααα ααΎααααΌαααααααΌααΌαααααΆααα·ααααααααααΆααααααααααααΆαααααΆαααααΆααα
αααααΆαααααΆαααααααα monolithic/single-node αααααα½ααα αα·αααΆαααααΎααααΆααααααΌα αααααα-ααΆααααααααΆααααΆαααααΎα‘αΎααα·α ααΌαααααΆααα·αααααα SQL αααααααΈαααααααααααα·αααααααΆααααΈα - ααααααΆααααααααΈααα’ααα (α§ααΆα αααααΆααααα αααααααααααααααααα·ααααααΆααααααΆααα αααΎα) αα·αααΆαααΆααααααα·αααααααααααααααααααααα·/ααΌαααα αααααΆααααααΆα ααα½ααα·αααααααααααα½αααΆααα·αα’αΆα ααΎαααΈααΆααααααα’αα·ααααΆαα node αααα½αααα ααΎαααΈααα ααΆαααΆααααααα·ααααααααααααα’αΆαααααα½αα ααα½αααααΌααααααααα·α αΆαααΆαααα»αααΆαα’ααα±αα ααααααα α»α (αα αααα»αααααΆααααααααααααΆαααΆαα ααααααα)α αα ααΈαααα’αααααααΌαα αα αΆαααΆααΆαααααααααΆα α·αααααΆαααααααΈαααααα·αααΆααααααΌαααΆααααα»ααααα αΆαααα αααα»αα αααΆααα ααααααΆαααααα ααΆαααααΎαα αα α»ααααααααΆαααααα·αααΆααααααααααααα·ααΆααααα»αααΆααααααα ααΆααα αααα»αααΌαααααΆααα·αααααα SQL α
ααΌαααααΆααα·αααααα NoSQL ααΆααααααΆααααΌαααΆαα ααα αΆααααααααααΆαα· αααααΊα§α αα αααα»ααα½αααΆ αα·ααααααααααΌαααΆααααα αααα ααΆααααα αα·αα ααα αΆαααΆαααααΆααααΆα αααΎαα αα½αααααΆαααΆαα±ααααΆαααΆααα·αααααααααΈα αααααΆααααααΆαα·αααααααααααΆααααα αΌαααααααΌαααα ααααααΆα αααΎααα ααΎααααΈααααΎααααα ααΉαααααΎααΆααααΆαααααα’αααααααΎα ααααα αα½αααΊααΎααααΈααα½αααΆαααααα·αααααΆαααααααααααΆαααααααα ααα½α shards αααα’αΆα ααααΎααΆααααα»αα’αα‘α»ααααα’αΆαα ααααααααΆααααΆ NoSQL αααααΌαα±ααα’αααααααΎααααΌαααα½αααααα’ααα αααααα SQL αααααΌαα±ααα’αααααααΎααααΌαα·ααααααααααα’αααα
NoSQL αααααααΎααΆααααααα ααΆαααΌαααΆαα’αα»ααααααααααα αααα»αα ααααααααααΆαα ααα αΆα α αΎααααααΊααΆα ααα»ααααΌαααααΆααααααΆααααΆααααααΌαααΆααα ααΆααΌαααααΆααα·ααααααααΆα αααΎαααααα½αααΆαααΆαααΆαααααααααα·ααααα·ααΆα ACID α αΌααα½α αα·αααααααααααααααΆαααααααααΆαααα
ααΆαα’αααα’αααΆααα½ααααααΆ αααααααααααΌαααααΆααα·αααααα NoSQL αααααααΌαααΆααααααααΆααΈααα’ααα αα·αααΆαα’αααααααααΎααα α»αααααα ααΆαααΆαααααααΆαααΆααΆααααα·ααααα·ααΆαααααΎα±αααα½ααααα·ααααααα·αααααααΆαααα·ααααααααααΆααααααααααααα
ααΆααΆαααΆαααααααααα αΆαααΈαααααααααααΌαα·αααααααα αααα»α NoSQL αα»αααΈ SQL α
SQL αα·α NoSQLα α ααα»α’αααΈα
αΆαααΆα
αααΆααααΈα?
αααααα·ααΈαα·αααα·ααααααΆαα’αααααααΎααααΆαααα½αα ααα½αααααΌα ααΆ Amazon.com, Netflix, Uber, αα·α Airbnb ααααΌαααΆααααααααΆααα·α αα αααα»αααΆαα’αα»αααααα·α αα ααΆααααα»αααααΆα αα·αα αααΎααα»αα α§ααΆα ααα αααααα·ααΈ e-commerce ααΌα ααΆ Amazon.com ααααΌαααΆααααααΆαα»αααααααααααΆα αα·ααααααααααΆαααααΌα ααΆ ααααααΆαα’αααααααΎααααΆαα ααα·ααα ααΆααααααΆαα·α αα·αααααααα αα½αααΆαα½αααΉααα·ααααααααααα αα·ααα·αααΌααααΎα ααΌα ααΆααΆαααΆααααααααα·ααα ααΆαααΆαααα αααααααΆαα’αααααααΎααααΆααα ααΆααα·αα·ααα αα·αααΆαααααΆαααααα’αααααααΎααααΆααα ααΆαααααααΆαα· αααααα·ααΈααΆαααααααΉαααα’ααααΎααΌαααααΆααα·αααααα SQL αααΆαα αα ααΆαααα½α αα½αααΆαα½αααΌαααααΆααα·αααααα NoSQL αααΆααα·α αα½αα αα αααα»αααααααααααααααααα αα·αααα ααΌαααααΆααα·αααααα NoSQL ααααΎαααΆαααΆααααΆαααααααΆααα ααα αΆαααΆαααΌαα·ααΆααααααααααΆαααα·ααααααααααααααΆαα»ααααα»αααΌαααααΆααα·αααααα SQL ααααααααα’αΆα αα»αα α·αααααΆαααααααα»αααααΎαααΆααα αααα»ααααααααΆααααΆαααα½αα
ααΎ YugaByte DB αα½ααααα αΌαααααΆ SQL αα·α NoSQL αααΆαααΌα ααααα ?
αααααΎαα‘αΎααα ααΎαααΆαααΈααααα»αα αααα»αααααααααααα·ααααααα ααα» ααΆαααααααααααααααααααααα· ααΆαα ααααααΆαααααααααααααΆαα ααα αΆαααα sharded αα·αααααα·ααααα·ααΆαα ααα αΆα ACID (αααα»ααααα·αααα Google Spanner) YugaByte DB ααΊααΆααΌαααααΆααα·αααααααααααααΎαα αα ααααΌααααααααα·ααααααααα’αΆα ααααΎααΆααααα»ααααααααΆαααααΆααΆαα½α NoSQL (Cassandra & Redis) αα·α SQL (PostgreSQL) α ααΌα αααααΆααααα αΆααααα»αααΆααΆαααΆαααααα YCQL αααααΆ YugaByte DB API ααααααΆααΆαα½α Cassandra ααααααααααααα·αααααααα·ααααα·ααΆα ACID αααα½α αα·ααα α»αααααΉα αα·αααααααααααααααΆαααααααααΆααααα NoSQL API αααα ααα»αααααΆαα±ααααΆαα αΌααα»αααααααααααα·ααααα·ααΆαααΌαααααΆααα·αααααα NoSQL α ααΎαααΈααα YCQL αααααΆ YugaByte DB API αααααααΌαααααΆααΆαα½α PostgreSQL ααααααααααααα·αααααΆαααααααΆααααααααΈααα’ααα αα·αααΆαα’αααααααααα α»ααααααααααααααααα·αα SQL API αααααΆαααααΌαααααΆααα·αααααα SQL α ααα αΆααα ααΆαααα·αααααα αααααΆααα YugaByte DB ααΊααΆααααα·ααααα·ααΆααα αααα»αααααααΆαα· ααΌα αααα NoSQL API α₯α‘αΌααααα’αΆα ααααΌαααΆαααααΎαα αααα»αααα·αααααα·ααααααααααΆααααααααααααα
ααΌα
αααααΆααααααΆααααΈαα»ααα
αααα»αα’ααααα
- ααααα·αααΎααααα»αααΆαααΆαα ααααααααα’αααααΊααΆααααα·ααααα·ααΆα JOIN α αααΎαααααΆαα αααααΆαααααα αααααααΎαααΎα YSQL ααΌααααααΆααΌαααααααα’αααα’αΆα ααααΌαααΆαα ααα αΆαααΆαααααΆααα αααΎα ααααααααΆαα±ααααΆαααΆαααΊααααΆαααααα αα·α/α¬αααααΌαα ααααααΆαααΆα NoSQL α
- ααΎαα·αααΌα αααααα ααΌαααααΎαααΎα NoSQL APIs ααΆαα½ααααα»αα αααα NoSQL APIs ααΆααααΈα αααα αα αΆαααΆα’αααααΉαααα½αααΆαααααΎαααΆαααΆαααααααααΎαα‘αΎαααΆαααααααααααα½ααααααΆααααααΎααΈααααΆαααα½ααααα»αααααααα½αα YugaByte DB α’αΆα βαααααΎβααΆβααΌαααααΆαβαα·ααααααβααααα·ααααα·ααΆαβααβαα½αβαααααΆααβαα·ααβαα·αβααΆβαααααα·ααΈβαααα»αααααΆαβαααβααααΌαβααΆαβαααααααααβααααα»αβααΆαααΆαβα αααΎαβαααα»αβαααβααααΆαβααααΆα
αααααΈααα·αααααααααΌαα·αααααααα
αααα»αααααααααααΆααααΊααα’ααααΎααΌαααααΆααα·αααααα PostgreSQL αα·α Cassandra API αααααααΌαααααΆααΉα YugaByte DB ααααααα»αααΈααΌαααααΆααα·ααααααααΎαα αα·ααΈααΆαααααααααααααααααααααΎααΆαααΆααααα½αααααΆαααααΎα’ααααααααααΆαα½α APIs ααΈααααααααααΆ (αα
ααΎα
αααααΈααααααααααΆ) αα cluster ααΌαααααΆααα·ααααααααΌα
ααααΆ αααα»αααΈααΆαααααΎ clusters α―αααΆαααααΆαααααα»ααα databases ααΈααααααααααΆα
αα
αααα»ααααααααΆαααααα ααΎαααΉααα·αα·αααααΎααααααΈααα·αααααααααΌαα·αααααα ααΎααααΈαααα αΆαααΈααΆααα»αααααΆ αα·αααΆαααΆαααααα½αα
ααα½αααααΌαααααΆααα·αααααααααααααααααααα
αααααΈααα·αααααααααΌαα·αααααα
ααΆαααα‘αΎαααΌαααααΆααα·αααααα
αααααΆαααΆααααααααααααααΎααΆααα ααΆααααΌαα·αααααα (ααΆααΆαααααΆααααααααααααΆαααΆαααααααΆααααα»αααααΆα) ααΎαααΉαααα‘αΎαααΌαααααΆααα·αααααααα αααα»α Docker containers αα ααΎαααΆαααΈαααΌαααααΆα α αΎααααααΆααααααααΎα’ααααααααααΆαα½ααα½αααΆαααααααΎααααααααΆααααΆααααααααΆαααααααα½αα
ααΌαααααΆααα·αααααααααα PostgreSQL & Cassandra αααααααΌαααααΆααΉα 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
MongoDB
docker run --name my-mongo -d mongo:latest
ααΆαα αΌαααααΎαααααΆααααΆααααααααΆ
α αΌαααααΆαααα ααΌαααααΆααα·αααααααααααααΎααααααααΆααααΆααααααααΆαααααΆαα APIs αααααααΌαααααΆα
PostgreSQL
docker exec -it yb-postgres-n1 /home/yugabyte/postgres/bin/psql -p 5433 -U postgres
Cassandra
cqlsh
αα
αααα»αααΆααΆα‘α»α bin
.
α
αααΆαααΆ CQL ααααΌαααΆααααα»ααααα·αααα SQL αα·αααΆαααααααα·αααααααααααΆααααΆααΆα αα½αααα αα½ααα αα·ααα·αα·ααααα ααααααΆαααΆααααα ααΆααΆααΆ NoSQL ααΆααααααααΆααααααααΆααααΆαααα½α αααααΆαα
αααΎαααΎαααΉααααααΆαααα
αααα»αα’ααααααααααααααααααα
docker exec -it yb-tserver-n1 /home/yugabyte/bin/cqlsh
MongoDB
docker exec -it my-mongo bash
cd bin
mongo
ααΆααααααΎαααΆααΆα
α₯α‘αΌααααααΎαα’αΆα ααααΎα’ααααααααααΆαα½αααΌαααααΆααα·ααααααααΎααααΈα’αα»ααααααααα·ααααα·ααΆααααααααααααααΎαααααΆααααΆααααααααΆα α αΌαα αΆααααααΎαααααααααΎαααΆααΆαααααααααΆαα»αααααααΆαα’αααΈααα αααααααααα·ααααααααα·αααααααααααααααΆα ααα αααααααΆαααααα’αΆα ααΆααααααα½αααα’αΆααααα»αα αα»αααααααααΆαααααΎααααααΆααααα ααααααα½αααΊααααΆαααααΆαα ααααααΆα ααααα αααααα αα·αααΆαααΆααααααα ααΎαααααΌααα·αααΌαα’αααΈαα»ααααααααααααααααα’αΆα ααααΌαααΆαααΆαααα’ααΆααααΆααααααΆα "ααααΆα" α ααΆα’αΆα αααααΆαα»ααα·ααααααααΆαααααααΆααα ααΆαααααααααααα»αααααααααΆααΌααααααααααΉαα
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
ααΆααααααΎαααΆααΆααα αααα»α Cassandra ααΊαααααααα ααΉα PostgreSQL α ααΆααα»ααααααααααΆααααααΆαααα½αααΊααΆαααααααΆαααΉααααα·αααΆααα»α αα·α (α§. αα·αααα NULL) ααα»αααααααααΊααΆαααα½ααα»αααααΌααααααααααα·ααΈ αα·ααααααΆααΌαααααΆααα·αααααα NoSQL ααα. ααα ααααααΆαααααΆαααΆα (αα½ααααα·ααααααααα»αα§ααΆα αααααΆαααααα) αα·ααααα»ααααα½αααα ααααα (αα½ααα SongTitle αααα»αα§ααΆα αααααΆαααααα)α ααααΆααα α»α ααΆαααΆααααααααΆααΎααΆαααΆα/ααΆαααΆααα½αααΆαα½αααααΆαααα½ααααα αΌα α αΎααα½αααα ααααααααα αΆαααΈααααααααα·αααααααα½αααααααΌαααΆααααα ααα αααα»α shard αα αα α»ααααααα
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 αααα ααα·ααααααα αΌααα αααα»αααΌαααααΆααα·αααααα (Database) (αααααααα ααΉα Keyspace αα αααα»α Cassandra) ααααα ααΈαααααΆαααααα»α (ααααααααΉαααΆααΆα) αααααΆαα―αααΆα (ααααααααΉααα½αααααααα»αααΆααΆα)α αα αααα»α MongoDB ααΆααΌαααααΆααα·αα αΆαααΆα αααααααααααααΆαααααααΌαααα αααα»α "ααααΎααΌαααααΆααα·αααααα"αααα αΆαααΆαααααα ααααΎα±ααααΌαααααΆααα·ααααααααααΆαααα ααΎααΆαα α ααΌαααααααΎαααααΌα αα·αααααΆααααααΌαααα·αααααααΆααααΌαααααΆααα·αααααααααααΆααααααΎαααααΈα ααΌααααΈααααααα»ααααα·αα αΆαααΆα ααααααΎαα±ααα αααΆααααΆααααα ααΆααααΌαααΆααααααΎααααααααααααααααα· αα αααα’αααααααααα―αααΆαααααΌααα ααααα»αααααΈα α αααΆαααΆ MongoDB ααααΎααΌαααααΆααα·ααααααααΆαααααααΆαααααΆαααΎα ααΌα ααααααααα·ααααα·ααΆαααααα·ααααααΌαααΆαα½αααααα·ααααααΆααααΌαααααΆααα·ααααααααΆααααΆααααΉαααααΎαααΆαααΎααΆααΆαααααΆαααΎαα
use myNewDatabase;
ααα½αααΆαααααααΆαα’αααΈααΆααΆα
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;
ααΆααααα
αΌααα·αααααααα
αααα»αααΆααΆα
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
ααΆααααα
ααααα·αα½α INSERT
αα
αααα»α Cassandra ααΎααα
ααααααααΉαααΆαα
αααα»α PostgreSQL α ααααααΆαααΆααααα ααΆαααΆααα»ααααααααααΆαααααα½ααα
αααα»αααααα·ααααΆα αα
Cassandra INSERT
ααΆααα·αααΊααΆααααα·ααααα·ααΆααα½αα UPSERT
αααααΆααααααααααααααα
α»ααααααααααΌαααΆααααααααα
αα½ααααααααα·αααΎαα½ααααααΆααα½α
α αΎαα
ααΆααααα αΌααα·ααααααααΊααααααααΉα PostgreSQL
INSERT
αααααααΆαααα
.
MongoDB
αααααΈααΆ MongoDB ααΊααΆααΌαααααΆααα·αααααα NoSQL ααΌα
Cassandra ααααα ααααα·ααααα·ααΆαααααΆααααα
αΌαααααααΆαα·αααΆαα’αααΈααΌα
ααααΆααΆαα½αααΉαα’αΆαααααα·αα·ααΆ semantic αααα Cassandra α αα
MongoDB UPSERT
αααααααΎα±ααααΆαααααααα
ααΉα PostgreSQL α ααΆααααααααα·ααααααααααΆαααΎααααααααΆα _idspecified
ααΉαααααΎα±ααα―αααΆαααααΈααααΌαααΆααααααααα
ααααα»αα
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"
}
}
);
αααα½αααΆααΆα
αααα ααααΆααΆααα»αααααΆααααααΆαααααα»ααααΆα SQL αα·α NoSQL αα
αααα»αααααααααααααΆαααΆαααααααα½αααΊααΆααΆααΆαααααΆαααααΎ FROM
ΠΈ WHERE
. SQL α’αα»ααααΆααααααΆααααΈααΆααααα
ααααα· FROM
ααααΎαααΎαααΆααΆαα
αααΎα αα·αααααααααΆαα½α WHERE
α’αΆα
ααΆαααΆααααα»αααααΆαααΆαα½α (αα½αααΆααααααα·ααααα·ααΆα JOIN
αααΆααα») α ααααααΆαααΆααααα NoSQL ααΆααααααααΉαααΆααααααα·αααααααααα FROM
αα·αααααΎααΆαααααΆαα½αααΆααΆααααααΆααααααΆαααα½α αα·ααα
αααα»α WHERE
ααΌαααα
ααααααααΌααααααααΆααααΆαα·α
αα
α αααααααΆαααα
ααΉαααΆααααα»αααΆαα’αα»αααα NoSQL αααααΎαααΆααα·ααΆαααΈαα»αα ααααααααΆααααΆαααααΆααα
ααααΆαααΆααααααααααα’αΆα
ααΎαααΆααα
αααα»αα’ααααααααααααααΆααΆα αα·ααααααΉαααααα ααΆα’αΆα
ααααΆαααΆααααααΆααααααααα½ααααα»αααΆαααααΆααααααα’ααααααααΆαα αα
αααααααΎαααααΉαααααΎ α αΎαααΌα
ααααααΆααΌαα
αααααΆαααΆαααα’αααα»αα α§ααΆα ααα Cassandra αααααΌαα±αααααα½αααααΌαααΆααααααα
ααααααααα·ααααα·ααααΆααααΆαα (αααααΆαααα =, IN, <, >, =>, <=
) αα
ααΎααααΆαααΆα ααΎαααααααααααααΎαα»ααα·αα·αααααααααΆααααααα (ααΆαααααααα·ααααα·αα = ααααΌαααΆαα’αα»ααααΆααα
ααΈααα)α
PostgreSQL
ααΆαααααααααααΆα§ααΆα αααααΈαααααα½ααααα’αΆα ααααΌαααΆαααααα·ααααα·αααΆαααΆααααα½ααααααΌαααααΆααα·αααααα SQL α
- αααα αΆαααα αααααααΆααα’ααααααα·ααααα;
- αααα αΆαααα αααααααΆααα’ααααααα·ααααααααααααΌαααΉααααααααααΌαααα αααααΎαα
- αααα αΆαααα αααααααΆααα’ααααααα·ααααααααααΆαααΆαααααΆααααΆαααα αααα»αα αααααΎα αα·αααΆαααααααα·α ααΆα 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
αααα»αα
αααααααα½α PostgreSQL αααααΆαααΆαααΆαααΎ ααΆααααααα½αααΈαα½αααα»ααααααααααΉαααααΎαααΆααα·αααααΆααααααΌααα
αααα»α Cassandra α
αΆααααΆααααΈααααα·ααααα·αα LIKE
αα·αβα’αΆα
βααααΌαβααΆαβα’αα»ααααβαα
βααΉαβαα½αβααβααΆβαααα»αβααΌα
βααΆ SongTitle
. αααα»αααααΈαααααΆαααααααα·ααααα·ααααα»ααααααααααααΌαααΆαα’αα»ααααΆα =
ΠΈ 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
ααΌα
αααααΆααααα αΆααα
αααα»αα§ααΆα ααααα»α αα·ααΈααΆαααααααααΆαααααααΆαααααααΎααααα½ααα
αααα»α MongoDB ααΊ music
αααα»αα§ααΆα αααααΆαααααα) ααΌα
ααααααΆαααΆααα½αααααα»αα
αααΎαααααΌαααΆαα αΆαααΆααα
db.music.find( {
artist: "No One You Know"
}
);
db.music.find( {
artist: "No One You Know",
songTitle: /Call/
}
);
ααΆαα’αΆααα½αααΆααα’ααααααΆααΆα
ααΆαα’αΆααα½αααΆααα’ααααααΆααααααΆααααΈαα·αααααααααΌαααα½ααααααΎαααΆαααΎαααΈαα»αα
PostgreSQL
SELECT *
FROM Music;
Cassandra
αααααααα ααΉαα§ααΆα ααα PostgreSQL ααΆαααΎα
MongoDB
db.music.find( {} );
ααΆαααααααα½ααα·αααααααααα»αααΆααΆα
PostgreSQL
PostgreSQL αααααααΆαααααΆα UPDATE
ααΎααααΈααααΆααααααΌααα·ααααααα ααΆαααααΆαα±ααΆαααα UPSERT
ααΌα
ααααααα
ααααΈαααααααΆααααααααΉααααΆααα ααααα·αααΎαα½ααααααααα
αααα»αααΌαααααΆααα·ααααααα
UPDATE Music
SET Genre = 'Disco'
WHERE Artist = 'The Acme Band' AND SongTitle = 'Still In Love';
Cassandra
Cassandra ααΆα UPDATE
αααααααα
ααΉα PostgreSQL α UPDATE
ααΆαα’ααααααααΌα
ααααΆα UPSERT
, ααααααααααΆ INSERT
.
αααααααα ααΉαα§ααΆα ααα PostgreSQL ααΆαααΎα
MongoDB
ααααα·ααααα·ααΆα UPSERT
. ααΆαααααΎαα
αα
α»ααααααααΆαα―αααΆαααΆα
αααΎα αα·αα₯αα·ααΆααααααααααααΆ UPSERT
α’αΆα
ααααΌαααΆαα’αα»αααααααααΆααααααααααααααααααααΆααααααα·ααααα·ααΆαα ααΆα§ααΆα ααα αααα»αα§ααΆα αααααΆαααααα αααααααααα·αααααααΆααααΆαααα½αααααΌαααΆαααααΎαα
αα
α»ααααααααΆααααααα’ααααΎααα
αααααααααααΆααα
db.music.update(
{"artist": "The Acme Band"},
{
$set: {
"genre": "Disco"
}
},
{"multi": true, "upsert": true}
);
ααΆααααα·ααααααα ααααΈααΆααΆα
PostgreSQL
DELETE FROM Music
WHERE Artist = 'The Acme Band' AND SongTitle = 'Look Out, World';
Cassandra
αααααααα ααΉαα§ααΆα ααα PostgreSQL ααΆαααΎα
MongoDB
MongoDB ααΆαααααα·ααααα·ααΆαααΈαααααααααΎααααΈαα»αα―αααΆα β
db.music.deleteMany( {
artist: "The Acme Band"
}
);
ααΆααα»αααΆααΆα
PostgreSQL
DROP TABLE Music;
Cassandra
αααααααα ααΉαα§ααΆα ααα PostgreSQL ααΆαααΎα
MongoDB
db.music.drop();
ααα ααααΈααααα·ααααΆα
ααΆαααααααααααα’αααΈααΆαααααΎαααΎααααΆα SQL αα·α NoSQL ααΆααααα»αα‘αΎαα’ααααααααααΆα 10 ααααΆαααα αΎαα ααΆααα·αααααΆαααααΆααααΈαα ααααααΆααααααααααααααα ααααΆαααααααααααΆαααΈαααΌαααααΆααα·αααααα (monolithic, ααααα·ααααα·ααΆα SQL αααααΉαααΆαα ααα αΆα, NoSQL ααααα·αααΆαααααα·ααααα·ααΆα) αα·ααα·ααΈααΆααααααα ααΆααΌαααααΆααα·αααααα (ααΆαααααΎααααΌαα·ααααααααααα’ααααα αααα»α SQL αααααΉαααΆαααααΎααααΌαααα½αααααα’ααααα αααα»α NoSQL) α
ααΆαα½αααΉαααΌαααααΆααα·ααααααααααα·ααααα·ααΆααααααΆαα ααα αΆαααΌα ααΆ YugaByte DB ααΆααα·ααΆααααΆα’αααΈααααΆααααααααααΌαααααΆααα·ααααααα’αΆα ααααΌαααΆααααααΆααααΆαααΆααααα½αα αααααΆαααα ααα·ααααααααααΆαα’αααΈαααα’αΆα ααααΌαααΆαααααααα ααααΆαααααα½α ααααΆαααααααααααααΆαα ααα αΆααααααααααααΆααααααααααΆαααααΆααααααααΈααα’αααααΆαα½αααΉαααΆαααααα/ααΆαααααΎα±ααααΆααα»αααααΆααααααααααααααααα·ααααΆαααΆα αΆαααΆα αα
ααΎαααΈααα ααΌα
ααΆαα
αααααα»αα’ααααααα½αα
ααααααααααΆααα·ααΆααααΆααΆααα ααΆααΌαααααΆααα·αααααααα·α ααΆααΆααΆαααααΉαααααΌααααα»αααΆααα·ααΆαααΆαα·ααΈααΆααααααα ααΆααΆααααΈα (SQL αα·α NoSQL) ααΊα αΆαααΆα ααααααΆαααααααα·ααΈαα·αααα·ααααααα»αααααΆαααΆαα½αα αα·ααΈααΆααααα "ααααΌαα·αααααα" αααα SQL α’αα»ααααΆαα±ααα’αααα’αα·ααααααααΆααααααΆααααα½ααααααααΆααααααΌαααΆαα’αΆααΈααααααααααααΆααααααΌα ααααααααα NoSQL "ααααΌαααα½α" α’αα»ααααΆαα±ααα’αααα’αα·ααααααααΌα ααααΆααααΎααααα·ααααα·ααΆαααΎααα·ααΆααααααααα·αααααααααααΆαααΆαααΊααααΆαααΆα αα·αα αααααααααα ααΆααΊαααααΆααα ααα»αααααααα YugaByte DB αααααααΌα SQL αα·α NoSQL APIs αα αααα»αααααΌαααΌαα ααΆααΆαααΆαααΎααααααααα·ααΈααΆααααααα½αα ααΎαααΈαααααααααααΆααααααααΌαααΆαααααααΆααΆαα½αααΆααΆααΌαααααΆααα·ααααααααααα·αααα½αααΆαα PostgreSQL αα·α Cassandra YugaByte DB ααΆααΆααΆα’αααα’αα·αααααααα·αα αΆαααΆα ααααααΆααΆααααααααααΎααααΈααααΎααΆαααΆαα½ααααΆαααΈαααΌαααααΆααα·αααααααααα ααα αΆα αα·αααααααααΆαααααα
αα αααα»αα’αααααααα ααΎαααΆαααΎαααΈαααααααααΌαααααΆαααααΉαααααΆααα ααΆααΌαααααΆααα·αααααααα»αααααΆαααΆα PostgreSQL, Cassandra αα·α MongoDBα αα αααα»αα’αααααααΆαααα’ααΆαα ααΎαααΉαα αΌααα αααα»ααααα·ααα ααΆααααα·ααααααααΌα ααΆ αα·αα·αααα ααααα·ααααα·ααΆα α αΌααα½α ααΆαααααΆα TTL αα·αα―αααΆα JSON α
ααΎαααΌαααΌαααα±ααα’ααααααααΆαααα’ααα
αΆααααα
α
α»ααααααΆα αα αΎαα’ααααΎαα’αααα±αααα
ααααα: www.habr.com