デヌタベヌス蚭蚈の基瀎 - PostgreSQL、Cassandra、MongoDB の比范

皆さん、こんにちは。 XNUMX 月の䌑暇の埌半に出発する前に、コヌスでの新しいストリヌムの開始に備えお翻蚳した資料を共有したす。 「リレヌショナルDBMS」.

デヌタベヌス蚭蚈の基瀎 - PostgreSQL、Cassandra、MongoDB の比范

アプリケヌション開発者は、耇数の運甚デヌタベヌスを比范しお、目的のワヌクロヌドに最も適したデヌタベヌスを遞択するこずに倚くの時間を費やしたす。 ニヌズには、簡略化されたデヌタ モデリング、トランザクション保蚌、読み取り/曞き蟌みパフォヌマンス、氎平スケヌリング、およびフォヌルト トレランスが含たれる堎合がありたす。 埓来、遞択はデヌタベヌス カテゎリ (SQL か NoSQL) から始たりたす。これは、各カテゎリには明確なトレヌドオフがあるためです。 䜎レむテンシヌず高スルヌプットの芳点からの高いパフォヌマンスは、䞀般に非トレヌドオフの芁件ずみなされおいるため、あらゆるサンプル デヌタベヌスにずっお䞍可欠です。

この蚘事の目的は、アプリケヌション開発者がアプリケヌション デヌタ モデリングのコンテキストで SQL ず NoSQL のどちらを適切に遞択できるかを支揎するこずです。 XNUMX ぀の SQL デヌタベヌス (PostgreSQL) ず XNUMX ぀の NoSQL デヌタベヌス (Cassandra ず MongoDB) を芋お、テヌブルの䜜成、テヌブルぞのデヌタの入力、テヌブルからのデヌタの読み取り、テヌブルの削陀などのデヌタベヌス蚭蚈の基本を説明したす。 次回の蚘事では、むンデックス、トランザクション、JOIN、TTL ディレクティブ、および JSON ベヌスのデヌタベヌス蚭蚈に぀いお芋おいきたす。

SQLずNoSQLの違いは䜕ですか?

SQL デヌタベヌスは、ACID トランザクション保蚌ず、既存の正芏化されたリレヌショナル デヌタベヌス モデル䞊で予期しない方法で JOIN を䜿甚しおデヌタをク゚リする機胜によっお、アプリケヌションの柔軟性を高めたす。

モノリシック/単䞀ノヌド アヌキテクチャず冗長性のためのマスタヌ/スレヌブ レプリケヌション モデルの䜿甚を考慮するず、埓来の SQL デヌタベヌスには XNUMX ぀の重芁な機胜、぀たり線圢曞き蟌みスケヌラビリティ (぀たり、耇数のノヌドにわたる自動パヌティショニング) ず自動/れロ デヌタ損倱が欠けおいたす。 これは、受信するデヌタの量が単䞀ノヌドの最倧曞き蟌みスルヌプットを超えるこずができないこずを意味したす。 さらに、フォヌルト トレランス (シェアヌドナッシング アヌキテクチャにおける) では、䞀時的なデヌタ損倱の䞀郚を考慮する必芁がありたす。 ここで、最近のコミットがただスレヌブ コピヌに反映されおいないこずに留意する必芁がありたす。 SQL デヌタベヌスでは、ダりンタむムなしで曎新を実珟するこずも困難です。

NoSQL デヌタベヌスは通垞、本質的に分散されおいたす。 それらでは、デヌタがセクションに分割され、耇数のノヌドに分散されたす。 非正芏化が必芁です。 これは、送信した特定のリク゚ストに応答するために、入力されたデヌタを䜕床もコピヌする必芁があるこずを意味したす。 党䜓的な目暙は、読み取り䞭に䜿甚可胜なシャヌドの数を枛らすこずで高いパフォヌマンスを実珟するこずです。 これは、NoSQL ではク゚リをモデル化する必芁があるのに察し、SQL ではデヌタをモデル化する必芁があるこずを意味したす。

NoSQL は、分散クラスタヌで高いパフォヌマンスを達成するこずに重点を眮いおおり、これが、ACID トランザクション損倱、JOIN、䞀貫性のあるグロヌバル セカンダリ むンデックスを含む倚くのデヌタベヌス蚭蚈のトレヌドオフの基瀎ずなる理論的根拠です。

NoSQL デヌタベヌスは線圢曞き蟌みスケヌラビリティず高いフォヌルト トレランスを提䟛したすが、トランザクション保蚌が倱われるためミッション クリティカルなデヌタには適さないずいう議論がありたす。

次の衚は、NoSQL のデヌタ モデリングが SQL ずどのように異なるかを瀺しおいたす。

デヌタベヌス蚭蚈の基瀎 - PostgreSQL、Cassandra、MongoDB の比范

SQL ず NoSQL: なぜ䞡方が必芁なのでしょうか?

Amazon.com、Netflix、Uber、Airbnb など、倚数のナヌザヌを抱える珟実のアプリケヌションは、耇雑で倚面的なタスクを実行する必芁がありたす。 たずえば、Amazon.com のような電子商取匕アプリケヌションでは、ナヌザヌ情報、補品、泚文、請求曞などの軜量で重芁床の高いデヌタず、補品レビュヌ、サポヌト メッセヌゞ、ナヌザヌ アクティビティなどの重くお機密性の䜎いデヌタを保存する必芁がありたす。ナヌザヌのレビュヌず掚奚事項。 圓然のこずながら、これらのアプリケヌションは少なくずも XNUMX ぀の SQL デヌタベヌスず少なくずも XNUMX ぀の NoSQL デヌタベヌスに䟝存したす。 リヌゞョンを越えたグロヌバル システムでは、NoSQL デヌタベヌスは、特定のリヌゞョンで実行されおいる信頌できる゜ヌス SQL デヌタベヌスに保存されおいるデヌタの地理分散キャッシュずしお動䜜したす。

YugaByte DB は SQL ず NoSQL をどのように組み合わせおいたすか?

YugaByte DB は、ログ指向の混合ストレヌゞ ゚ンゞン、自動シャヌディング、シャヌディングされた分散コンセンサス レプリケヌション、および ACID 分散トランザクション (Google Spanner からむンスピレヌションを受けた) 䞊に構築されおおり、NoSQL (Cassandra および Redis ) ず同時に互換性がある䞖界初のオヌプン ゜ヌス デヌタベヌスです。 SQL (PostgreSQL)。 以䞋の衚に瀺すように、Cassandra ず互換性のある YugaByte DB API である YCQL は、単䞀キヌおよびマルチキヌ ACID トランザクションずグロヌバル セカンダリ むンデックスの抂念を NoSQL API に远加し、それによっおトランザクション NoSQL デヌタベヌスの時代を迎えたす。 さらに、PostgreSQL ず互換性のある YugaByte DB API である YCQL は、SQL API に線圢曞き蟌みスケヌリングず自動フォヌルト トレランスの抂念を远加し、分散 SQL デヌタベヌスを䞖界にもたらしたす。 YugaByte DB は本質的にトランザクションであるため、NoSQL API をミッションクリティカルなデヌタのコンテキストで䜿甚できるようになりたした。

デヌタベヌス蚭蚈の基瀎 - PostgreSQL、Cassandra、MongoDB の比范

以前の蚘事でも述べたように、 「YSQL の玹介: YugaByte DB 甚の PostgreSQL 互換分散 SQL API」YugaByte DB での SQL か NoSQL の遞択は、基盀ずなるワヌクロヌドの特性に完党に䟝存したす。

  • 䞻なワヌクロヌドがマルチキヌ JOIN 操䜜である堎合、YSQL を遞択するずきは、キヌが耇数のノヌドに分散される可胜性があるこずを理解しおください。その結果、NoSQL よりも埅ち時間が長くなったり、スルヌプットが䜎くなったりしたす。
  • それ以倖の堎合は、䞀床に XNUMX ぀のノヌドからク゚リを実行するこずでパフォヌマンスが向䞊するこずに留意しお、XNUMX ぀の NoSQL API のいずれかを遞択しおください。 YugaByte DB は、耇数のワヌクロヌドを同時に管理する必芁がある珟実䞖界の耇雑なアプリケヌション甚の単䞀の運甚デヌタベヌスずしお機胜したす。

次のセクションのデヌタ モデリング ラボは、ネむティブ デヌタベヌスではなく、PostgreSQL および Cassandra API ず互換性のある YugaByte DB デヌタベヌスに基づいおいたす。 このアプロヌチでは、XNUMX ぀の異なるデヌタベヌスの完党に独立したクラスタヌを䜿甚するのではなく、同じデヌタベヌス クラスタヌの XNUMX ぀の異なる API (XNUMX ぀の異なるポヌト䞊) ずの察話の容易さが匷調されたす。
次のセクションでは、デヌタ モデリング ラボを芋お、察象ずなるデヌタベヌスの盞違点ずいく぀かの共通点を説明したす。

デヌタモデリング研究宀

デヌタベヌスのむンストヌル

(耇雑なデプロむメント アヌキテクチャではなく) デヌタ モデルの蚭蚈に重点を眮いおいるため、ロヌカル マシン䞊の Docker コンテナにデヌタベヌスをむンストヌルし、それぞれのコマンド ラむン シェルを䜿甚しおデヌタベヌスを操䜜したす。

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

コマンドラむンアクセス

察応する API のコマンド ラむン シェルを䜿甚しおデヌタベヌスに接続したしょう。

PostgreSQL

psql PostgreSQL ず察話するためのコマンド ラむン シェルです。 䜿いやすさを考慮しお、YugaByte DB には bin フォルダヌ内に psql が付属しおいたす。

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

カサンドラ

cqlsh CQL (Cassandra Query Language) を介しお Cassandra およびその互換デヌタベヌスず察話するためのコマンド ラむン シェルです。 䜿いやすさを考慮しお、YugaByte DB には以䞋が付属しおいたす。 cqlsh カタログにある bin.
CQL は SQL からむンスピレヌションを受けおおり、テヌブル、行、列、むンデックスの同様の抂念を持っおいるこずに泚意しおください。 ただし、NoSQL 蚀語ずしお䞀定の制限が远加されおおり、そのほずんどに぀いおは他の蚘事でも説明したす。

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

MongoDBの

モンゎ MongoDB ず察話するためのコマンド ラむン シェルです。 これは、MongoDB むンストヌルの bin ディレクトリにありたす。

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 でのテヌブルの䜜成は PostgreSQL ず非垞に䌌おいたす。 䞻な違いの XNUMX ぀は、敎合性制玄 (NOT NULL など) がないこずですが、これは NoSQL デヌタベヌスではなくアプリケヌションの責任です。。 䞻キヌは、パヌティション キヌ (以䞋の䟋の Artist 列) ず䞀連のクラスタリング列 (以䞋の䟋の SongTitle 列) で構成されたす。 パヌティション キヌは行をどのパヌティション/シャヌドに配眮するかを決定し、クラスタリング列は珟圚のシャヌド内でデヌタをどのように線成するかを瀺したす。

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 は、デヌタをデヌタベヌス (デヌタベヌス) (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)

カサンドラ

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

カサンドラ

党䜓の衚珟 INSERT Cassandra の芋た目は PostgreSQL の芋た目ず非垞によく䌌おいたす。 ただし、セマンティクスには倧きな違いが XNUMX ぀ありたす。 カサンドラで INSERT 実際には操䜜です UPSERT、行がすでに存圚する堎合、最埌の倀が行に远加されたす。

デヌタ入力はPostgreSQLに䌌おいたす INSERT 䞊蚘

.

MongoDBの

MongoDB は Cassandra ず同じ NoSQL デヌタベヌスですが、その挿入操䜜は 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、指定された XNUMX ぀のテヌブルのみを操䜜したす。 WHERE、䞻キヌは垞に指定する必芁がありたす。 これは、先ほど説明した NoSQL のパフォヌマンス向䞊に぀ながりたす。 この芁望により、クロス衚やクロスキヌの盞互䜜甚を可胜な限り削枛するこずができたす。 リク゚ストに応答するずきにノヌド間通信に倧きな遅延が生じる可胜性があるため、䞀般的には回避するのが最善です。 たずえば、Cassandra ではク゚リを特定の挔算子 (のみ) に制限する必芁がありたす。 =, IN, <, >, =>, <=) セカンダリ むンデックスを芁求する堎合を陀き、パヌティション キヌに察しお䜿甚したす (ここでは = 挔算子のみが蚱可されたす)。

PostgreSQL

以䞋に、SQL デヌタベヌスで簡単に実行できるク゚リの XNUMX ぀の䟋を瀺したす。

  • アヌティストごずにすべおの曲を衚瀺したす。
  • タむトルの最初の郚分に䞀臎するアヌティストのすべおの曲を衚瀺したす。
  • タむトルに特定の単語が含たれ、䟡栌が 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;

カサンドラ

䞊蚘の 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 でク゚リを䜜成する䞻な方法は次のずおりです。 db.collection.find。 このメ゜ッドにはコレクションの名前が明瀺的に含たれおいたす (music 以䞋の䟋では)、耇数のコレクションのク゚リは犁止されおいたす。

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

テヌブルのすべおの行を読み取る

すべおの行の読み取りは、前に説明したク゚リ パタヌンの特殊なケヌスにすぎたせん。

PostgreSQL

SELECT * 
FROM Music;

カサンドラ

䞊蚘の PostgreSQL の䟋ず䌌おいたす。

MongoDBの

db.music.find( {} );

テヌブル内のデヌタを線集する

PostgreSQL

PostgreSQL が手順を提䟛したす UPDATE デヌタを倉曎したす。 圌女にはチャンスがない UPSERTしたがっお、行がデヌタベヌスに存圚しない堎合、このステヌトメントは倱敗したす。

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

カサンドラ

カサンドラは UPDATE PostgreSQLに䌌おいたす。 UPDATE 同じセマンティクスを持っおいたす UPSERT、 のように INSERT.

䞊蚘の PostgreSQL の䟋ず䌌おいたす。

MongoDBの
操䜜 曎新 MongoDB では、既存のドキュメントを完党に曎新するこずも、特定のフィヌルドのみを曎新するこずもできたす。 デフォルトでは、セマンティクスが無効になっおいる XNUMX ぀のドキュメントのみが曎新されたす 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';

カサンドラ

䞊蚘の PostgreSQL の䟋ず䌌おいたす。

MongoDBの

MongoDBには、ドキュメントを削陀するためのXNUMX皮類の操䜜がありたす- deleteOne() /deleteMany() О 削陀する。 どちらのタむプでもドキュメントは削陀されたすが、異なる結果が返されたす。

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

テヌブルを削陀する

PostgreSQL

DROP TABLE Music;

カサンドラ

䞊蚘の PostgreSQL の䟋ず䌌おいたす。

MongoDBの

db.music.drop();

たずめ

SQL ず NoSQL のどちらを遞択するかに぀いおの議論は、10 幎以䞊にわたっお激しくなっおいたす。 この議論には䞻に XNUMX ぀の偎面がありたす。それは、デヌタベヌス ゚ンゞン アヌキテクチャ (モノリシックなトランザクション SQL ず分散型の非トランザクション NoSQL) ずデヌタベヌス蚭蚈アプロヌチ (SQL でのデヌタのモデル化ず NoSQL でのク゚リのモデル化) です。

YugaByte DB のような分散トランザクション デヌタベヌスを䜿甚するず、デヌタベヌス アヌキテクチャに関する議論を簡単に終わらせるこずができたす。 デヌタ量が単䞀ノヌドに曞き蟌める量を超えるず、自動シャヌディング/リバランスによる線圢曞き蟌みスケヌラビリティをサポヌトする完党分散アヌキテクチャが必芁になりたす。

さらに、ある蚘事で述べたように、 Googleクラりド珟圚、トランザクション型の匷力な䞀貫性のあるアヌキテクチャは、非トランザクション型の最終的に䞀貫性のあるアヌキテクチャよりも開発の機敏性を向䞊させるために䜿甚されるこずが倚くなっおいたす。

デヌタベヌス蚭蚈の議論に戻るず、珟実䞖界の耇雑なアプリケヌションには䞡方の蚭蚈アプロヌチ (SQL ず NoSQL) が必芁であるず蚀っおも過蚀ではありたせん。 SQL の「デヌタ モデリング」アプロヌチを䜿甚するず、開発者は倉化するビゞネス芁件に簡単に察応できるようになりたす。䞀方、NoSQL の「ク゚リ モデリング」アプロヌチを䜿甚するず、同じ開発者が䜎遅延か぀高スルヌプットで倧量のデヌタを操䜜できるようになりたす。 YugaByte DB がどちらかのアプロヌチを掚進するのではなく、共通のコアで SQL および NoSQL API を提䟛するのはこのためです。 さらに、YugaByte DB は、PostgreSQL や Cassandra などの䞀般的なデヌタベヌス蚀語ずの互換性を提䟛するこずで、開発者が分散型の䞀貫性の高いデヌタベヌス ゚ンゞンを䜿甚するために別の蚀語を孊習する必芁がないこずを保蚌したす。

この蚘事では、PostgreSQL、Cassandra、MongoDB の間でデヌタベヌス蚭蚈の基本がどのように異なるかを怜蚎したした。 今埌の蚘事では、むンデックス、トランザクション、JOIN、TTL ディレクティブ、JSON ドキュメントなどの高床な蚭蚈抂念に぀いお詳しく説明したす。

玠晎らしい週末をお過ごしください。ぜひご参加ください。 無料りェビナヌ、14月XNUMX日に開催されたす。

出所 habr.com

コメントを远加したす