MongoDB 5.0のハイライト #MongoDB
この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。
はじめに
2021年7月14日にMongoDB 5.0がリリースされました。メジャーリリースであり、注目機能がたくさんあります。この記事ではそのハイライトをご紹介します。
Versioned API
短いサイクルでのバージョンアップは新たな機能や性能向上を早く取り入れることができますが、その一方でアップグレードは複雑で長い時間かかることがあります。これはアプリ側のdriverやコード側の依存性の問題から、それらを修正する必要があるためです。新しい「Versioned API」では、全てが変わりました。Versioned APIではアプリケーションで最もよく使われるコマンドとパラメータのセットを定義し、これらのコマンドは変化することがありません。以下のようなメリットがあります。
- データベースのバージョンが上がっても、そのコードを変更することなく動き続けるため、ドライバーを特定のバージョンで固定できる。
- アプリケーションのライフサイクルとデータベースのライフサイクルを切り離すことができるので、アプリケーションの将来性を確保し、他のデータベースより優れた投資保護を受けることができます。
Native Time Series Platform
5.0のリリースでMongoDBは汎用アプリケーション用のデータプラットフォームを拡張し、開発者がより簡単に時系列データを扱えるようにすることで、IoT・金融・配送等でのイノベーションを活用できるようになります。MongoDB5.0は時系列データのライフサイクル全体(保存、クエリ、リアルタイム分析、可視化、オンラインアーカイブやデータの有効期限の設定まで)をネイティブにサポートすることで、時系列データアプリケーションのビルドと実行を早くてローコストにします。
MongoDBの新しいTime Series Collectionsは時系列データを自動で最適化と圧縮し、ストレージ容量やI/Oを減らし、優れたパフォーマスとスケールの実現します。これらの最適化は長い開発サイクルを減らし、時系列アプリケーション特有のユニークなパフォーマンスと分析要件に対応したスキーマを素早く構築できます。次のコマンドを実行するだけで、時系列データ保存に最適化されたコレクションを作成できます。
db.createCollection(“collection_name”,
{ timeseries: { timeField: “timestamp” } } )
それに加えて、次のような機能、特徴が追加されました。
- 最適化されたスキーマであっても、アプリケーションの要件とデータの送信頻度に応じてメタデータと時間軸保証をモデルできる柔軟性は維持されます。
- MongoDBはシームレスに取り入れ量を調整し、自動で順番のずれたデータを処理することで、膨大な量の時系列ストリーミングデータを取り入れることができます。
- データ取り入れの選択肢を増やすために、MongoDB Connector for Apache Kafkaの最新リリースで時系列のネイティブサポートが加わりました。
- MongoDB Query APIに窓関数が追加されたことにより、移動平均や累積和などの分析クエリを実行して、隠れたパターンを見つけることができるようになりました。
- 新しい時間的演算子である $dateAdd、$dateSubstract、$dateDiff、および $dateTrunc を使用すると、カスタムの時間間隔でデータを集約して検索することができます。
Live Resharding
従来のMongoDB、および多くの分散型データベースでは、既存のシャードキーを変更するリシャーディングは、手動で複雑なプロセスを実施する必要がありました。MongoDB 5.0で新たに導入されたライブシャーディングの機能を使うと、reshardコマンドを実行して、リシャードしたいデータベースとコレクションを指定し、新しいシャードキーを指定すれば、あとはMongoDBが自動で実行します。
ライブシャーディングにより、次のようなメリットがあります。
- アプリケーションの進化に合わせシャードキーをより簡単に変更できる
- ライブシャーディングは完全自動かつ、数週間かかっていたプロセスが数時間程度で処理することもあります
- 新しい機能や新しい要件が出てきたときに、柔軟にシャードキーを変更できます
Next Generation Privacy and Security
MongoDBのクライアントサイドフィールドレベルエンクリプション(FLE)により、マルチクラウドクラスタでのデータプライバシーコントロールが可能になりました。クライアントサイドFLEは、AWSのキーマネジメントサービス(KMS)との連携を前提にリリースされていましたが、MongoDB 5.0では、Azure Key VaultとGoogle Cloud KMSのネイティブサポートが一般公開されました。
今回の機能追加により、主要なクラウドプロバイダーが提供する鍵管理サービスをサポートできるようになるだけでなく、異なるクラウドの鍵を使用した複数レイヤーの暗号化を利用できるようになりました。
Other MongoDB 5.0 Highlights: Developer Productivity
開発者の生産性を上げるために、次のような機能、特徴が追加されました。
- 新しいMongoDB Shellがゼロから再設計されたことにより、優れたユーザーエクスペリエンスを提供し、MongoDBデータプラットフォームを操作・管理することがさらに容易になります
- 新しいPyMongoArrow APIのリリースにより、Pythonを使ってMongoDBのデータに対して複雑な分析や機械学習を実行することができるようになりました。
- スキーマ検証に失敗するたびに、詳細なエラーメッセージが表示されるようになり、問題の切り分けと修正を用意にします。
Other MongoDB 5.0 Highlights: Platform Resilience
Platformのレジリエンスを上げるために、次のような機能、特徴が追加されました。
- デフォルトのWrite Concernがmajority concernとなり、操作はプライマリノードに適用され、過半数のレプリカに永続化されたときのみコミットされます。
- メンテナンス時の影響を減らすために、in-flightインデックスビルドが自動で元の位置から再開するようになりました。
- ドライバーレベルでコネクションストームを防ぐことで、デプロイメントのレジリエンスが向上します
感想
メジャーリリースだけあって、開発面、性能面、セキュリティ面等で、非常に多くの機能追加があったと思います。個人的には「Native Time Series」における進化が気になっており、検証だけでなく、実際の案件でも機会があればぜひ使ってみたいと思います