インターネットの急速な発展に伴い、大量のデータが生成され蓄積され続けています。企業にとって、このデータを効率的に処理し、有意義な分析を行う方法は非常に重要な問題です。ビッグ データのアプリケーションでは、時系列データと地理データの 2 つの非常に一般的なタイプがあります。この記事では、MongoDB と Atlas を使用して時系列データと地理データのストレージと統計を実装する方法を紹介します。
MongoDB は、従来の表形式ではなく JSON 形式のドキュメントを使用してデータを保存するドキュメント データベースです。これにより、特に非構造化データを保存する場合に、MongoDB がより柔軟かつ強力になります。 MongoDB は、リレーショナル データベースよりも水平方向に拡張し、高可用性を実現するのが簡単です。
Atlas は、MongoDB を管理およびデプロイするためのシンプルかつ強力な方法を提供する MongoDB のマネージド サービスです。 Atlas は、AWS、Google Cloud、Microsoft Azure などのさまざまなクラウド サービス プロバイダーをサポートし、さまざまなセキュリティ オプションと監視ツールを提供します。
時系列データは、センサー データやログ情報など、時間とともに変化するデータの一種です。多くのアプリケーションでは、時系列データのストレージ、クエリ、統計が非常に重要です。 MongoDB は、TTL インデックス作成、レプリケーション、シャーディングなどのテクノロジをサポートすることで、時系列データの効率的な保存と処理をサポートします。
TTL (Time To Live) インデックスは、ドキュメントの有効期限を制御できる MongoDB の特別なインデックスです。 TTL インデックスを使用すると、時系列データを自動的に削除して、データが無制限に増大することを回避できます。 TTL インデックスの使用方法も非常に簡単で、インデックス作成時に属性を指定し、属性の有効期限を設定するだけです。
次は、PHP と MongoDB 拡張ドライバー (MongoDB PHP ライブラリ) を使用して時系列データを操作する例です:
// 连接 MongoDB $client = new MongoDBClient("mongodb://localhost:27017"); // 获取数据库和集合 $database = $client->sensor; $collection = $database->data; // 插入数据 $data = [ "timestamp" => new MongoDBBSONUTCDateTime(), "value" => rand(0, 100) ]; $result = $collection->insertOne($data); // 查询数据 $start = new MongoDBBSONUTCDateTime(strtotime("-1 day") * 1000); $end = new MongoDBBSONUTCDateTime(); $filter = ["timestamp" => ['$gte' => $start, '$lte' => $end]]; $options = ["sort" => ["timestamp" => 1]]; $cursor = $collection->find($filter, $options); // 输出数据 foreach ($cursor as $document) { echo $document["timestamp"]->toDateTime()->format('Y-m-d H:i:s') . " " . $document["value"] . " "; }
この例では、最初に MongoDB に接続し、A データベースを取得しました。 sensor
という名前と data
という名前のコレクション。次に、タイムスタンプとデータ値を含むドキュメントを挿入しました。最後に、最新の日のデータをクエリし、そのタイムスタンプと値を出力します。
地理データは、地図データ、GPS データなど、地理的位置に基づいて保存および処理されるデータの一種です。多くのアプリケーションでは、地理データのストレージ、クエリ、統計も非常に重要です。 MongoDB は、地理的インデックス作成や地理的クエリなどのテクノロジをサポートすることで、地理的データの効率的な保存と処理をサポートします。
地理インデックスは、ドキュメント内の地理的位置情報に基づいてクエリのパフォーマンスを最適化できる MongoDB の特別なインデックスです。地理インデックスを使用すると、ある場所の近くのデータを簡単にクエリしたり、集約されたデータのヒート マップを地図上に描画したりすることができます。
以下は、PHP と MongoDB 拡張ドライバーを使用して地理データを操作する例です:
// 连接 MongoDB $client = new MongoDBClient("mongodb+srv://<username>:<password>@<cluster>.mongodb.net/test"); // 获取数据库和集合 $database = $client->geodata; $collection = $database->places; // 创建地理索引 $collection->createIndex(["location" => "2dsphere"]); // 插入数据 $data = [ "name" => "Central Park", "location" => ["type" => "Point", "coordinates" => [-73.967617, 40.785091]] ]; $result = $collection->insertOne($data); // 查询数据 $point = new MongoDBBSONJavascript('function() {return {type: "Point", coordinates: [-73.964609, 40.782865]}}'); $filter = ["location" => ['$near' => ['$geometry' => $point]]]; $options = ["limit" => 3]; $cursor = $collection->find($filter, $options); // 输出数据 foreach ($cursor as $document) { echo $document["name"] . " " . $document["location"]["coordinates"][0] . "," . $document["location"]["coordinates"][1] . " "; }
この例では、最初に Atlas で MongoDB に接続し、次に A データベースという名前のファイルを取得しました。 geodata
と places
というコレクション。次に、地理インデックスを作成して、ある場所の近くのデータをより速くクエリできるようにしました。次に、位置情報を含むドキュメントを挿入し、ある点に最も近い 3 つの位置をクエリしました。
この記事では、MongoDB と Atlas を使用して時系列データと地理データを保存およびクエリする方法を紹介します。 MongoDB のドキュメント データベース モデルと強力なクエリ言語は、非構造化データの操作に最適であり、Atlas のマネージド サービスとセキュリティ オプションにより、ユーザーは MongoDB を簡単に導入および管理できます。 MongoDB と Atlas は、時系列インデックス、地理インデックス、その他の機能を組み合わせることで、ユーザーがさまざまな種類のデータを効率的に処理および分析できるようにします。
以上がPHP 開発: MongoDB と Atlas を使用して時系列データと地理的データのストレージと統計を実装するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。