We’re sorry we missed you at re:Invent, but we can still meet!

シーケライズの最適化: 最高の効率を得るための内蔵リードアサイドキャッシュの使用

MomentoでSequelizeアプリを強化する

プラティク・アガルワル
著者

Share

リードアサイドキャッシュはシンプルで予測可能であり、何をキャッシュするか、いつキャッシュするか、キャッシュミスをどのように処理するかをユーザーが制御できます。ここで、Postgres、MySQL、MariaDB、SQLite、Microsoft SQL Server用のプロミスベースのNode.js ORMであるSequelizeのパワーと、Momentoのキャッシュシステムの高速性を想像してみてください。

なぜSequelizeを使うのか?

Sequelize は、Node.js でリレーショナル データベースを扱う多くの開発者にとって頼りになる ORM です。柔軟性、スケーラビリティ、そして複雑なデータベースとのやり取りを処理するパワーを提供します。しかし、アプリケーションがスケールしてデータベースが大きくなると、データの取得がボトルネックになることがあります。そこで、リード・アサイド・キャッシュの出番となります。。

毎回プライマリー・データ・ソースからフェッチするのではなく、リード・アサイド・キャッシングはまずキャッシュをチェックします。データが存在する場合はすぐに提供し、存在しない場合はプライマリ・ソースからフェッチし、キャッシュしてから提供します。このパターンは、プライマリデータストアの定常状態での負担を軽減するだけでなく、予期せぬトラフィックの急増を吸収し、ピーク負荷時でも一貫したデータ検索パフォーマンスを確保する上で特に重要です。

Momento による救助

MomentoがサポートするSequelize用のリードサイドキャッシング実装は、両方の長所をもたらします。Momentoの堅牢なキャッシュ機構により、ライブラリはSequelizeクエリを効率的にキャッシュします。また、Sequelize の方言に精通している人にとっては、Sequelize のどのデータベース方言でもキャッシュエンジンとして Momento を使用できるという素晴らしいニュースもあります。

セットアップは簡単です。依存関係をインストールします:


npm i @gomomento-poc/momento-sequelize-cache

Momento APIキーを作成し、model-cacheと呼ばれるキャッシュを作成し、統合します:

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 オブジェクトは、既存の Sequelize モデルをwrapするために使用できるラップメソッドを提供します。その時点から、ラップされたオブジェクトは、Sequelize モデルオブジェクトが提供するのと同じ、使い慣れた API を提供します。たとえば、User モデルから主キーで User を取得するには、次のようにします:

await modelCache.wrap(User).findByPk(1);

この呼び出しは、リード・アサイド・キャッシングのライフサイクルをオーケストレーションします。キャッシュの取得を優先し、キャッシュに失敗した場合は Sequelize データベースに頼り、その後のリクエストのためにキャッシュを更新します。様々なクエリを使ったサンプルの一つを実行することで、すぐに始めることができます。

福利厚生のスポットライト

負荷軽減: キャッシュからリカレントデータを提供することで、プライマリデータベースの負荷を効率的に軽減し、プライマリデータストアへの負担を軽減します。
・スパイク・スムージング:予期せぬトラフィックの急増を吸収し、ピーク時でもデータベースの応答性を維持します。
一貫したレイテンシー: 予測可能なデータ検索時間を実現し、応答時間のばらつきを低減します。
・コスト削減: データベースからの直接読み取り回数を減らし、運用コストを削減できます。
拡張性の強化: プライマリデータベースをすぐに拡張する必要なく、将来の成長に備えたアプリケーションを準備できます。

このような利点があるため、Momento のリード サイド キャッシングと Sequelize を統合することは、アプリケーションのパフォーマンスを最適化したい開発者にとって魅力的な選択肢となります。

結論

リード・アサイド・キャッシュは、アプリケーションのパフォーマンスを大幅に向上させることができます。データ検索が高速化されるだけでなく、プライマリデータストアの負荷も軽減されるため、開発者とエンドユーザーの両方にメリットがあります。Momento が Sequelize アプリケーションを強化することで、スピードと効率の調和の取れたブレンドが実現します。

Sequelizeを増幅する準備はできていますか?Momentoライブラリに飛び込んで、魔法が繰り広げられるのをご覧ください。ご質問やサポートが必要な場合は、遠慮なく私たちのDiscordサーバーまでご連絡ください。私たちのチームはいつでも、あなたのキャッシングゲームを向上させるお手伝いをしたいと思っています。

データ検索にかかる時間を節約することは、ユーザー体験の向上につながります。Momentoを活用して、ユーザーに最高の体験を提供しましょう。ハッピー・キャッシング!

Share