現在運用している4,855件のMarkdown(MD)ファイルを、将来的に**MySQL(Astro DB)**へ移行するための設計指針を整理しました。
単なるデータの移行ではなく、「管理のしやすさ」と「データベースならではの強力な機能」を両立させるためのハイブリッドな構成を目指します。
1. メタデータはDB、本文はMarkdownのハイブリッド管理
すべてのデータをDBに入れるのではなく、役割を分担させることにしました。
- MySQL (DB): 記事のタイトル、日付、ステータス、そして詳細な分類コード(NDC)などの「検索・ソート」に使うメタ情報を管理します。
- Markdown (ファイル): 記事の本文は、これまで通り書き慣れたエディタで執筆し、Gitで差分管理できるファイル形式を維持します。
これにより、執筆のしやすさを保ちつつ、サイト上では数千件のデータから瞬時に関連記事を呼び出すような高速な動作が可能になります。
2. 小数点以下6桁まで対応する「最強のNDC設計」
今回、特にこだわったのが「日本十進分類法(NDC)」の扱い方です。 小数点以下6桁(例:007.642109)という非常に精緻な分類にも対応できるよう、以下のカラムを定義しました。
ndc_base: 基本の3桁(007など)ndc_suffix: 小数点以下の部分。なし・1桁・6桁など変動に対応。ndc_sort: 数値型(decimal)で保存。これにより、複雑な小数点のコードも、図書分類の正しい順番で一瞬で並べ替えることができます。ndc_level: 階層の深さを数値化。パンくずリストを自動生成する際のヒントにします。
3. 「関連用語」のデータベース化
これまではファイルごとに手動で管理していた「関連用語」も、専用のテーブル(中間テーブル)で管理します。 これにより、「Aに関連するB」だけでなく「Bから参照されているA」といった双方向の繋がりをシステムが自動で把握できるようになります。知識と知識が網目状につながる「知識グラフ」の構築に向けた大きな一歩です。
4. 移行のプロセス:器を先に作り、スクリプトで流し込む
移行の手順は、以下の「自動化」を前提としています。
- 設計図の作成:
db/config.tsで、上記の項目を備えたDBの器を作ります。 - インポートスクリプトの実行: 4,000件以上のMDファイルをプログラムで1つずつ読み取り、YAML部分のデータを解析してDBへ流し込みます。
- 整合性チェック: 流し込みの過程で、日付の入力ミスや分類コードの不備を自動検知し、データの品質を高めます。
今後の展望
まずはローカルのAstro DBでこの環境を立ち上げ、実際にデータを流し込んで「触れる」状態にしていきます。
「ファイルとしての安心感」と「データベースとしての強力な機能」。この両方を手に入れることで、4,000件の知識がより整理され、価値を持つ場所へと進化させていきたいと考えています。


コメント