ブログ

Mythexのアプリに、それぞれ専用のデータベースが付く理由

Mythexで作ったアプリが、サインアップ、予約、注文などのデータを保存する必要がある場合、Mythexはそのプロジェクトに専用のPostgresデータベースを与えます。共有データベースの中のテーブルでも、他の人のスキーマの隣に置かれたスキーマでもありません。要求に応じて作られる、独立したデータベースです。誰も使っていないときはスリープします。なぜそのように作ったのか、そしてそのコストは何かを説明します。

得られるもの

「見込み客のメールアドレスを保存して」「予約を保存して」と頼むか、/databaseコマンドを使うと、Mythexは次のことを行います。

  • プロジェクト専用のPostgresデータベースを作成します(現在はPostgres 17です)。
  • 接続情報を、ワークスペースと公開済みアプリに環境変数として注入します。そのためコードには一切現れません。
  • エージェントがテーブルを作成し、データを読み書きできるようにします。

ライブプレビューと公開済みアプリは、同じデータベースを使います。データベースは、5分のアイドル後にスリープし、次のクエリで目覚めます。新しいデータベースは小さく始まり、負荷に応じて拡張できます。ただし上限があるため、暴走したクエリが際限なく大きくなることはありません。詳しくはデータベースのドキュメントをご覧ください。

なぜ1つの大きな共有データベースではないのか?

各行にどのアプリに属するかを示す列を持たせた共有データベースは、運用が安く、単純です。しかし、私たちは次の4つの理由から、そうしないことにしました。

1. 信頼しなくてもよい分離

AIが書いたコードは間違えます。共有データベースでは、あるアプリのクエリにWHERE app_id = …が1つ抜けただけで、別の顧客のデータを読み取ったり、上書きしたりしかねません。アプリごとに独立したデータベースがあれば、他の顧客のデータに手が届くことはありません。バグは、そのアプリの中にとどまります。

2. 独自の層ではなく、本物のPostgres

アプリは、通常の接続文字列で標準のPostgresと通信します。Postgresで動くライブラリ、ORM、ツールはすべて、ここでも動きます。プロジェクトをエクスポートして別の場所で動かす場合も、Mythex専用のAPIではなく、どのホスティング事業者でも提供しているPostgresのデータベースを想定して動きます。

3. 各アプリを必要な形にできる

あるアプリは、時間枠に一意制約を持つbookingsテーブルを必要とし、別のアプリは商品の全文検索を必要とします。独立したデータベースがあれば、各アプリのスキーマとマイグレーションは、そのアプリ自身の問題になります。誰にも合う最大公約数的な設計に、無理に合わせる必要はありません。

4. コストは使用量に従う

各データベースは個別にスリープするため、誰も使っていないアプリにはほとんどコストがかからず、忙しいアプリのコストは独立した項目として見えます。公開済みのデータベースの使用量は、データベースが実際に計測した値をもとに請求されます。その請求の仕組みをご覧ください。

トレードオフ

この設計は無料ではありません。

  • コールドスタート。 長く静かな時間の後、スリープしているデータベースは最初のクエリで目覚めるのに少し時間がかかります。ほとんどのアプリでは、ほぼ気になりません。しかし、いつでも即座に応答しなければならないアプリでは、考慮が必要です。
  • 起きたままのコスト。 データベースは、何かがクエリを送っている間は起きたままです。数秒ごとにデータベースをポーリングするアプリは、一日中データベースを起こし続け、必要なときだけクエリするアプリより高くつきます。使用量が想定より多く見える場合、たいていはこれが原因です。その場合は、ポーリングをやめて、必要になったときにデータを読み込むようAIに依頼してください。
  • 私たち側の仕組みが増える。 何千ものデータベースを作成、追跡、クリーンアップするのは、1つだけの場合より手間がかかります。それを背負うのは私たちの仕事であり、あなたの仕事ではありません。

データベースが初めての方へ

データベースとは、アプリが覚えておくべきものを保存する場所です。この考え方が新しい場合は、データベースとは何かとPostgresとは何かから始めてください。データを保存するものを作る準備ができたら、AIでアプリを作る方法で、それを追加する手順を説明しています。

Mythex · Pricing · AIでなんでも作ろう · ウェブサイト・アプリのテンプレート · Mythexを比較 · AIアプリ開発用語集 · AIアプリ開発の無料ツール · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)