土曜日 11:30 a.m.–12時
Room 201 #pyconjp_201Sharding with SQLAlchemy
Akira Matsuzaki
- 対象レベル:
- 中級
- カテゴリ:
- Databases/NoSQL
- スライド:
- https://www.slideshare.net/akipom/sharding-with-sql-alchemy
- ビデオ:
- https://youtu.be/F6cvEbc4EN4
説明
マルチテナント型のサービスを開発・運用する際に使われるテクニックの一つとして、データベースの Sharding があります。本トークでは、Pythonの代表的なORMであるSQLAlchemyを使って、単一のアプリケーションインスタンスから、Sharding されたデータベースへのアクセスを実現するテクニックを説明します。
概要
マルチテナント型のサービスを開発・運用する際に使われるテクニックの一つとして、データベースの Sharding があります。
マルチテナント型のサービスを運用する方式としては、テナント毎に完全にアプリケーションインスタンスを分割するようなものから、単一のアプリケーションインスタンスで全てのテナントをカバーするようなものまで多数の方式があります。
その中でもデータベースをどのように配置するかは、アーキテクチャ設計の上で常に開発者を悩ませるポイントの一つです。
本トークでは、このような状況下でよく利用される以下のようなDB配置パターンに対して Python の代表的なORMの一つである SQLAlchemy を活用するテクニックをご紹介します。
* 書き込み系と読み込み系のDBインスタンスを分離するパターン (master - slave)
* テナント毎にDBのスキーマやインスタンスを分離するパターン (sharding)
トーク中では、 Engine, Pool, Connection といったSQLAlachemy の core 機能だけではなく、DB設計パターンに合わせて、declarative base や autoload をどうするかといった、ORM側の機能にも触れます。