SequelizeでバックアップしたデータベースとMomentoをインテグレーションする
Sequelizeは、Oracle、Postgres、MySQL、MariaDB、SQLite、SQL Serverなどでよく使われているORMです。
このチュートリアルでは、Momento sequelize モデル キャッシュ ラッパー について説明します。 チュートリアルが終わるまでに、最小限のコード変更で Sequelize-Backed ORM データベースをシームレスにキャッシュできるようになります。
前提条件
アプリでMomentoとSequelizeを使用するには、次のものが必要です:
- Node バージョン 16 以上がマシンにインストールされていること https://nodejs.org/en/download
- Momento consoleを使ってMomento側を設定する。メールアドレスを入力するか、既存の Google または GitHub アカウントをリンクすることで、コンソールでアカウントを作成できます。コンソールにログインしたら、ページの右上にある
Create Cache
ボタンをクリックします:
model-cache
というキャッシュを作成します。キャッシュはAWSかGCPの好きなクラウドプロバイダーに、好きなリージョンで作成できます。
Create
ボタンを押すと、利用可能なキャッシュのリストに新しい model-cache
キャッシュが表示されます。
キャッシュを作成した地域もキャッシュのリストに表示されていることに注意してください。次のステップで Momento 認証トークンを生成するときに、同じリージョンを選択する必要があります。api_keysページに移動し、キャッシュの作成に使用したクラウドプロバイダとリージョンを選択し、Super User API Key
トークンタイプを選択し、Generate API Key
ボタンをクリックします。
このAPI Key
をコピーし、安全な場所に保存します。後でアプリケーションを実行する際に、環境変数として追加する必要があります。
ラッパーをアプリケーションに組み込む
Momentoラッパーをあなたのsequelizeアプリケーションにインテグレーションするには、まずラッパーの最新リリースをインストールしましょう。
npm install @gomomento-poc/momento-sequelize-cache
これで、必要なインポートを追加し、Sequelize モデルを wrap
して、読み取り専用キャッシュとして Momento にバックアップさせる準備が整いました。
Sequelizeでバックアップされたデータベースの上にMomentoラッパーを作成するには、Momentoクライアントを作成し、ファクトリメソッドに渡します。コピーした ApiKey
を環境変数 MOMENTO_API_KEY
としてエクスポートすることを忘れないでください。
import { Configurations, CredentialProvider } from "@gomomento/sdk";
import { modelCacheFactory, MomentoClientGenerator} from "@gomomento-poc/momento-sequelize-cache";
const momentoClient = MomentoClientGenerator.getInstance({
configuration: Configurations.Laptop.latest(),
credentialProvider: CredentialProvider.fromEnvironmentVariable({environmentVariableName: 'MOMENTO_API_KEY'}),
defaultTtlSeconds: 60,
});
const modelCache = await modelCacheFactory(momentoClient);
modelCache
オブジェクトには wrap
メソッドが用意されており、既存の Sequelize モデルをラップすることができます。その時点から、ラップされたオブジェクトは Sequelize モデルオブジェクトと同じ使い慣れた API を提供します。たとえば、(User
モデルから)主キーで User を取得するには、次のようにします:
await modelCache.wrap(User).findByPk(1);
この呼び出しは、read-aside cachingのライフサイクルをオーケストレーションします。キャッシュの取得を優先し、キャッシュに失敗した場合は Sequelize データベースに頼り、その後のリクエストのためにキャッシュを更新します。様々なクエリでサンプルを実行することで、すぐに始めることができます。
例
もっと多くの機能を試してみたいですか?私たちのexamplesをフォークして、exampleを実行することでも始めることができます:
git clone https://github.com/momentohq/momento-sequelize-cache
cd examples
npm install
MOMENTO_API_KEY="yourApiKey" npm run basic
この例では、findByPk
、findOne
、count
、findAll
など、ラッパーがサポートするさまざまな Sequelize オペレーションを示します。また、クエリをキャッシュできる異なるテーブル間の join
も示します。
結論
read-aside cachingは、アプリケーションのパフォーマンスを大幅に向上させることができます。データ検索が高速化されるだけでなく、プライマリデ ータストアの負荷も軽減されるため、開発者とエンドユーザーの両方にメリットがあります。Momento が Sequelize アプリケーションを強化することで、スピードと効率の調和の取れたブレンドが実現します。