実務において主流の一つであるデータベース管理システム
MySQL
commited date: 2025-01-16
-
OPTIMIZE TABLE
#Database MySQLにおいてテーブルインデックスを再編成し最適化する命令 MySQL :: MySQL 8.0 リファレンスマニュアル :: 13.7.3.4 OPTIMIZE TABLE ステートメント
-
Atlas
-
レプリケーション
#Database 書き込みまたは読み取りをリーダー、読み取りをフォロワーで行われ、リーダーへの書き込みがフォロワーに伝播される仕組みをレプリケーションと呼ぶ。 レプリケーションの方法として ステートメントベース write-aheadログ 等がある。 ステートメントベースはSQLをそのまま転送する形になるため副作用を持つ関数が返す結果にズレが生じる方法で、MySQL5.1以前に採用されていた。 write-aheadログはPostgreSQL,Oracleで使用されているが、ログが低レベルに記述されているため詳細実装と密になってしまう。 その他レプリケーションのトポロジーとしていくつかのパターンがある マルチリーダーレプリケーション 複数のデータセンターにリーダーが存在する。リアルタイムの同時編集がイメージに近い。 書き込みの衝突があった際に最終的に同じ値に収束させるような方法が取られる リーダーレスレプリケーション AmazonがDynamoシステムで利用し流行しDynamoスタイルと呼ばれる。 一部のノードが何らかの理由で利用できなくてもクオラムによって読み取りあるいは書き込みの正当性を判断する
-
KEDA
-
ngram
#Database MySQLに搭載されている全文検索向けの全文パーサー、日本語対応している。 FULLTEXT と合わせて指定しインデックスを生成する MySQL :: MySQL 8.0 リファレンスマニュアル :: 12.10.8 ngram 全文パーサー
-
トランザクション分離レベル
#Database ACIDのうち、I(Isolation)について言及するような分離性のレベル。 RDBMS間で共通して4つの分離レベルがあるが、分離レベルの命名が異なるケースがあり曖昧になっている。 Read Uncommitted コミットされていない未確定のデータを読み取るダーティリードが発生する Read Committed ダーティリード、ダーティライトが生じない Snapshot Isolation OracleではSERIALIZABLE、PostgreSQLやMySQLではRepeatable Readと呼ばれるため曖昧 読み取りスキュー(nonrepeatable read)が生じない、読み取りはロックを取らず常にトランザクション開始時のスナップショットを参照する スナップショットとして複数のバージョンを保持するためMVCC(multi-version concurrency controll)の手法が用いられる Serializable 書き込みスキュー(ファントム)が生じない、複数のレコードを跨いだ一貫性を保証する ユニーク制約によって書き込みスキューを防止できない際に必要となる 全てのトランザクションが直列で実行されるように振る舞うことで直列化可能と呼ばれる