Closed8

【Webパフォーマンスチューニング】データベースチューニングメモ

ヒロケイヒロケイ

RDBMSが備える一貫性とは何か?
→ ASID特製のうのひとつ

処理の前後で整合性が保たれる性質
銀行の振り込み時、振込先口座への入金処理飲み失敗した場合、振り込み元の口座のお金がなくなってしまうことになる。この時に振り込み処理自体を取り消すことで、処理の前後での整合性が保たれる。
また、振り込み元の残金が負の値になってしまうこともデータが正しい状態になっておらず、一貫性が保たれなくなってしまう。このような時にも振り込み処理自体を取り消し、処理の前と同じような状態に戻す(ロールバック)することで、一貫性を保つ。

ヒロケイヒロケイ

MySQL: シンプルなクエリを素早くこなすやつ。スピードタイプ
PostgreSQL: 高機能で複雑なクエリを作ることができるやつ。パワータイプ

ヒロケイヒロケイ

RDBMSは複数のサーバーにデータを分散させるのが難しい。つまりスケールアウトが難しいのか。

ヒロケイヒロケイ

スケールアウトが難しいのか。

それはなぜか?

複数のサーバー間で一貫性を保つのが難しいため。
一貫性を緩めてデータを非同期的に一致させることで読み取り専用DBを作ったりと言った方法でスケールアウト(処理を分散)する方法ががある。

ヒロケイヒロケイ

RDBMSは一貫性を提供。
トランザクションが進行中の場合は操作中のテーブルをロックして他のクエリを実行できないようにテーブルをロックする。
一貫性を持つRDBMSだけでは負荷を捌ききれず、スケールが追いつかない時に登場し始めたのがNoSQLなのか。

ヒロケイヒロケイ

NoSQLとは?
高速な処理を提供するDBMS。

メモリ領域にデータを保存したりできるDBもあり、RDBMSであまり変化しないデータの参照をNoSQLに移譲したり、LRUというアルゴリズムによる一定期間使われていないデータを自動で削除する機能を持ったDBもある。

保存するデータの方が違ってくるのもNoSQLの特徴。
memcached → key : value = 1 : 1
mongoDB → ドキュメント(JSONとか)

この辺の記事でまとめてた。
https://zenn.dev/keigo_hirohara/articles/a41d43300cad07

ヒロケイヒロケイ

NoSQL早くて便利だけど、一貫性を担保するためにアプリケーション側で考慮しなければならない問題が多かった。
そこで登場したのがNewSQL!

ヒロケイヒロケイ

NewSQLとは?
一貫性を持つRDBMSとスケーラビリティの問題を解決したNoSQLの両方のメリットを兼ね備えたスーパーDB!

MySQL互換のTiDB
PostgreSQL互換のCockroachDB (G...!)

このスクラップは2日前にクローズされました