メインコンテンツまでスキップ

DB.

12 — データベースに関する記事

01

PolarDB のストレージ・コンピュート分離

アーキテクチャの観点から PolarDB のストレージ・コンピュート分離設計を分析します。計算とストレージのデカップリングがどのように拡張性・ストレージコスト・高可用性の課題を解決するのかを、AWS Aurora や従来型 MySQL アーキテクチャと比較しながら解説します。

02

Canal コンポーネント

Canal は Alibaba がオープンソースで公開している、MySQL Binlog ベースの増分購読・消費コンポーネントです。本記事では、その動作原理、よくある CDC コンポーネントとの比較、そしてクラスターによる高可用デプロイでの注意点を整理します。

03

Neo4j グラフデータベース

Neo4j はグラフデータモデルを採用した高性能なグラフデータベースで、リレーション密度の高いシナリオの処理を得意とします。本記事ではその料金モデル、データ構造、主要機能を整理し、選定時の注意点を補足します。

04

データベースの分類

データモデル、処理方式、デプロイ方式、記憶媒体、アクセス方式といった軸からデータベースの分類を整理し、各種データベースの典型的なユースケースを紹介します。

05

MySQL の時刻の四捨五入

MySQL の DATETIME はデフォルトで秒までの精度しかなく、Java から渡されたミリ秒が四捨五入されて、時刻が 1 秒増えてしまうことがあります。その原理と、DATETIME(fsp) および Java 側での切り捨てという 2 つの解決策を記録します。

06

InnoDB の BufferPool 徹底解説

InnoDB BufferPool の階層構造とページ管理を詳しく解説:Page Hash、Free/LRU/Flush リスト、ホット・コールドデータの分離、そしてダーティページをディスクにフラッシュする 4 つのタイミング。

07

MySQL の実行チェーン

1 本の SQL が MySQL 内部でたどる完全な実行チェーンを整理します。コネクタからエグゼキュータまで、Buffer Pool がディスク IO をどう減らすか、そして Redo Log・Bin Log・Undo Log それぞれの役割と 2 フェーズコミットについて解説します。

08

分散トランザクションと Seata

マイクロサービスアーキテクチャでは各ビジネスモジュールが独立した DB ストレージノードを持ち、DB を跨ぐ呼び出しが分散トランザクション問題をもたらします。本記事では Seata の役割分担と、AT、TCC、Saga、XA という 4 つのモードの原理とトレードオフを整理します。

09

HBaseの紹介とMongoDBとの比較

HBase はカラム指向のスケーラブルな分散ストレージシステムで、安価な PC クラスタ上で PB 級のデータを支えられます。本記事ではそのアーキテクチャ、読み書きの流れ、LSM ツリー構造とメリット・デメリットを整理し、MongoDB とユースケースを比較します。

10

MySQL トランザクションデッドロック解析

並行トランザクションはどのようにして互いに待ち合う膠着状態に陥るのか。ロック取得順序からデッドロックの成因を推理し、InnoDB の undo log に基づくロールバックの取捨と wait-for graph 検出機構を解説し、最後にデッドロック確率を下げる実践的ノウハウを紹介します。