第9章 バックアップとリストア バックアップとリストア
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
ElectricHarmonyのNeo4jとの旅は、トランスフォーマーに他ならない。アーティスト、アルバム、ユーザの嗜好をマッピングするための実験的なグラフデータベースとしてスタートしたものが、瞬く間にレコメンデーション・エンジンの中核要素となった。チームは、リアルタイムの音楽ディスカバリー、プレイリストのキュレーション、アーティストのリレーションマッピングの構築に成功し、そのすべてがNeo4jの複雑なコネクションを光速でトラバースする能力によって支えられている。
しかし、成功には規模が伴い、規模にはリスクが伴う。
ElectricHarmonyのユーザベースが爆発的に増えるにつれ、グラフデータベースも爆発的に増えている。毎日何百万ものリレーションシップが作成・更新され、停止時間という選択肢はもはやない。同社のエンジニアリングチームは、クエリを最適化し、インデックスをチューニングし、Neo4jを本番環境にデプロイしたが、まだ1つの重要なピースが残っている。
書き込みパス
バックアップ戦略の前に、Neo4jがどのようにデータを書き込み、永続化するかを理解することが重要である。Neo4jのトランザクション・ライフサイクルは、耐久性と一貫性を保証するために、構造化されたシーケンスに従う。
図9-1にシーケンスの概要を示す。
図 9-1. トランザクションのライフサイクル
第2章を思い出してほしい。トランザクションは、データベースに変更が加えられると、、開始される。これらの変更は初期化時にメモリに適用され、データが最終的にディスクに書き込まれる前に中間層として機能するページキャッシュにストアされる。
トランザクションがコミットされる前に、その変更はトランザクションログに書き込まれなければならない。このステップは、トランザクションディレクトリの下に位置する、別の逐次ログファイルに変更を記録することにより、耐久性を保証する。
トランザクションログエントリが耐久性をもってディスクに書き込まれると、システムはそのトランザクションをコミットしたものとしてマークする。これにより、障害が発生しても変更が回復可能であることが保証される。コミット演算子はトランザクションを確定し、その変更を公式に可視化し、、システムが後続のリクエストに続行できるようにする。
チェックポイント
Neo4jのチェックポイントは 、データベースのハウスキーピングプロセスの一部である。トランザクション・ログがすべての変更を記録することで耐久性を保証する一方、チェックポイントは、ダーティ・ページ(コミットされたトランザクションによって変更されたページ)をページ・キャッシュからストア・ファイルにフラッシュすることで、リカバリ時間を最適化するのに役立つ。チェックポイントの間、Neo4jはすべての変更がストアファイルに反映されるまでの最新のログポジションを記録する。これにより、システムはトランザクションログの古い部分を破棄し、クラッシュ後、ログ全体を再生する必要なく、より迅速に再起動することができる。
チェックポイントには2つの主な目的がある: ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access