0Pricing
SQL Academy · レッスン

シャーディングしない場合

読み取りレプリカ、パーティショニング、より大きなサーバーで大半のスケール問題は解決できます。シャーディングが適切でない場合を理解します。

「シャーディングしない場合」はCoddyKit上の無料SQL Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはSQL Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 SQL Academyコースには全4レッスンが含まれています。

シャーディングは最後の手段

シャーディングは運用の複雑さを何倍にも増やします。ほとんどのアプリケーションでは必要ありません。まずはより単純な選択肢をすべて検討してください。

ステップ1:垂直スケーリング

より大きなサーバーに移行します。最新のクラウドインスタンスなら、簡単に次の規模を処理できます:

  • 128コア
  • 1 TB RAM
  • 50,000 IOPSのNVMe

これは、単一のPostgresノードで100k〜500k QPSに相当します。ほとんどのアプリケーションには十分な性能です。

ステップ2:リードレプリカ

読み取りが中心であれば、レプリカを追加します。1つのプライマリと3つのレプリカで、読み取り性能を10倍にできる場合があります。

ステップ3:キャッシュ

頻繁にアクセスされるクエリの前段にRedisやmemcachedを配置します。多くの場合、最も低コストで効果を得られます。

ステップ4:パーティショニング

ネイティブPGの宣言的パーティショニングは、単一サーバー内で「テーブルが大きすぎる」問題に対処します。シャーディングより100倍簡単な場合もあります。

ステップ5:サービスの分割

異なるドメインを異なるデータベースに移します。orders DB、users DB、analytics DBなどです。それぞれを独立してスケールできます。

ステップ6:分析処理を分離

OLTPクエリはPostgresで処理し、分析クエリはClickHouse / BigQuery / Snowflakeで処理します。「シャーディングが必要だ」と考えているケースの多くは、実際には「分析処理がOLTPを圧迫している」状態です。

その後で、必要ならシャーディング

OLTPのみで50TBのデータを扱ってもなお容量が不足し、1台のサーバーでは処理できない書き込み性能が必要になったら、シャードの計画を始めます。

シャーディングの運用コスト

  • 監視とパッチ適用が必要なサーバーが増える
  • シャード間のバックアップを調整する必要がある
  • シャード横断クエリの処理がアプリケーションコードに及ぶ
  • リシャーディングが困難
  • ホットシャードには継続的なリバランシングが必要

「遅くシャード化する」戦略

シャーディングを意識したパターンで構築し、後からシャード化できるようにします(常にtenant_idを含め、グローバルにインクリメントするカウンターは使用しません)。ただし、必要に迫られるまではシャード化しないでください。

シャーディングに適したスキーマ

単一ノードのまま運用する場合でも、シャード化する可能性を考慮して設計します:

  • すべての行にTenant_id
  • UUIDまたは分散ID(オートインクリメントではないもの)
  • グローバルに一意なシーケンスを使用しない
  • 外部キーをテナントの範囲内に限定

トレードオフを認識する

シャーディングは、機能性を犠牲にして容量を増やします。JOIN、トランザクション、クエリが難しくなります。その効果に見合う価値があることを確認してください。

まとめ

シャーディングは現実の問題を解決しますが、負担も大きい方法です。

  • まず垂直スケーリング
  • リードレプリカとキャッシュ
  • シャーディングの前にパーティショニング
  • OLTPから分析処理を分離
  • シャード化を前提に設計し、実際のシャード化は先送り

確認問題

OLTPクエリが遅いため、シャーディングを検討しています。シャーディングの前に、最も効果が期待できる対策は何でしょうか。

よくある質問

「シャーディングしない場合」レッスンは無料ですか?

はい。「シャーディングしない場合」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、SQL Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 SQL Academyコースには全4レッスンが含まれています。

「シャーディングしない場合」で何を学びますか?

読み取りレプリカ、パーティショニング、より大きなサーバーで大半のスケール問題は解決できます。シャーディングが適切でない場合を理解します。 ブラウザで直接実行するハンズオンコードでSQL Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

SQL Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのSQL Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「シャーディングしない場合」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このSQL Academyレッスンでコードを書いて実行できますか?

はい。すべてのSQL Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. シャーディング戦略:範囲、ハッシュ、ディレクトリ
  2. シャード間クエリ:難しい問題
  3. Citusと分散Postgres
  4. シャーディングしない場合
← SQL Academyに戻る