皆様、こんばんは。
現在運営している辞書サイトですが、大きな転換期を迎えようとしています。 現在、約3,000語の用語をMarkdown形式で管理し、AstroのContent Collectionsを使ってサイトを構成しています。ファイル構成も分類ごとにフォルダ分けを行い、Accessでの管理も視野に入れて非常に整然と運用してきました。
しかし、私の最終的な目標は「100万語」を超える巨大な辞書サイトを構築することです。
今のMarkdownベースの運用でも、3,000語程度であれば非常に快適に動作しています。しかし、これが1万語、10万語、そして100万語となった時、ファイルシステムとしての限界や、ビルド時間の増大、そして何より「データの検索・修正」という管理面での課題が浮き彫りになることが予想されます。
そこで本日、これまでの「ファイルベース」の運用から、**「Astro DB(SQLite / Drizzle ORM)」**によるデータベース運用へ移行することを決意しました。
なぜ Astro DB なのか?
検討の過程では、Decap CMSによるGUI管理や、XserverのMySQL、さらにはSupabaseなどのクラウドDBも候補に上がりました。その中でAstro DBを選んだ決め手は、以下の3点です。
- Astroとの圧倒的な親和性: 公式ツールであるため、現在のTypeScript環境をそのまま活かせます。
- 100万語を支えるスケーラビリティ: データベース化することで、100万件の中からでもミリ秒単位での検索が可能になります。
- 柔軟なインポート機能: 今ある3,000個のMarkdown資産を、スクリプト一つで一括投入できることがわかりました。
これからのステップ
明日以降、いよいよ実作業に入ります。まずは以下の手順で、安全に、かつ着実に進めていく予定です。
- 環境構築:
npx astro add dbによるAstro DBのインストール。 - スキーマ設計: 現在のMarkdownのフロントマターに合わせ、DBのテーブル構造を定義。
- 移行テスト: 数件のMarkdownファイルをDBへ流し込み、表示確認。
- 自動生成の連携: 現在行っている用語の自動生成プロセスを、DBへ直接書き込む形へアップデート。
100万語という数字は果てしないようにも思えますが、適切な技術基盤(器)さえ整えば、あとは一歩ずつ中身を積み上げていくだけです。
Accessでのデータ管理スキルも、今後はDBの設計やデータのクレンジングにおいて大きな武器になると確信しています。
明日からの作業が今から楽しみです。また進捗がありましたら報告いたします。


コメント