2016-10-31 8 views
0

S3オブジェクトストレージを使用して、1時間に1ファイルの時間ベースのデータを保存したいと考えています。
現在、これは、1日の1分ごとに、年、月、日付、およびデータフォルダーの下にあるフォルダーを持つEBSに保管されています。
オブジェクトストレージにファイルを保存するのに賢明な問題は見られませんが、特定の時間間隔を取得するためにS3を「照会」したいのですか?
トップに「検索」機能を実装する最良の方法は何ですか?
シンプルなファイルがありますか? 誰もこの経験がありますか?Amazon S3 - タイムベースのファイルを保存する

S3用にPHP SDKを使用します。

答えて

2

Amazon S3には「クエリ」言語がありません。あなたができることは、ファイルをプレフィックスに整理し、その結果に基づいて結果を制限することです。例えば

S3であなたのオブジェクトがあることをした場合、:

  • 年 - 月 - 日 - 時 - 分 - SECOND.TXT

    次に、あなたがでオブジェクトを一覧表示することができます特定の年:2016-

  • 特定の月:2016-10-
  • 特定の日:2016-10-31-

など、接頭辞を使用しています。

しかし、S3内で特定の時間範囲を指定することはできません。特定の時間範囲に基づいて照会する場合は、毎日、毎月、毎年の結果を収集し、除外したいものを取り除く必要があります。例えば

あなたは12:01 10月29日と12:01 10月31日の間でオブジェクトを照会したい場合、あなたは次の接頭辞からオブジェクトを収集することができたい:

  • 2016-10-29-
  • 2016-10-30-
  • 2916-10-31-

、手動でご希望の時間帯の前後の項目を削除します。

クエリをよりうまく実行したい場合は、クエリ用に設計されたデータベースを使用することをお勧めします。 SimpleDBが機能するかもしれません。 DynamoDBとSQLが動作します。あなたはS3にファイルをダンプし、そのオブジェクトのキーとタイムスタンプをデータベースに記録することができます。

クエリでは、dbから選択し、必要に応じてS3からファイルを取得します。

更新:例

は、あなたが細かくなどのファイルの束を持っていると仮定接頭辞を使用して:

2016-10-29-00-00.txt 2016-10-29-00 -01.txt 2016-10-29-00-02.txt ... 2016-10-30-00-00。TXT 2016-10-30-00-01.txt ... 2016-10-31-00-00.txt ... 2016-11-01-00-00.txt

そして、そうです。 =接頭辞「2016-」

  • は、2016年10月からすべてのファイルを取得するには:2016年からすべてのファイルを取得するには

    • は、その後、あなたが接頭辞を使用して、次の検索を行うことができます接頭辞=「2016から10 - "

    • 2016年10月30日からすべてのファイルを取得するには:prefix =" 2016-10-30- "
    • 2016年10月30日00:00から00:59までのすべてのファイルを取得するには、接頭辞=" 2016 -10-30-00 "
    • 10月の00:05の時からすべてのファイルを取得するには30、2016:2016年10月29日の12:00と11の間

      • ファイル:S3のような範囲検索を行うことができない接頭辞= "2016-10-30-00-05"

      オプション1:プレフィックスを使用して、日付範囲で、毎日のためにS3からオブジェクトを取得します。

      年10月31日

    はその代わりに、2つのオプションを持っています

    • "2016-10-29-"
    • "2016-10-30-"
    • "2016-10-31-"

    あなたはそのリストを持っていたら、あなたはそれらを組み合わせますあなたの希望する時間帯の前後からファイルを取り除くことができます。

    オプション2:あなたは、そのリストを持っていたら、あなたはコンバインなり、再び

    • "2016-10-"

    :接頭辞を使用して、日付範囲の各月のS3からオブジェクトを取得しますそれらのファイルを削除し、希望の時間範囲の前後にファイルを取り除きます。

    あなたが選択するのは、検索に必要な区別された日の数が、検索で月に返されたオブジェクトの数と比較されます。

    このロジックはかなり複雑になります。適切な検索可能なデータベースが価値があるかもしれません。

  • +0

    get_object_list()呼び出しを行うときに、PHP SDKにPRCE-Stringフィールドがあることがわかります。http://docs.aws.amazon.com/AWSSDKforPHP/latest/index.html#m=AmazonS3/get_object_list cant this検索のために? – HyperDevil

    +0

    いいえ 'prce'はS3から返された結果をフィルタリングするために使用される正規表現です。それは「検索」ではない。それは文字列の比較です。それは時間の比較を行いません。 –

    +0

    だから私はこのサービスのための別の "クエリ"データベースを作成しない場合、私は絶対にすべてのオブジェクトをリストし、私のアプリケーションを通して結果をフィルタリングする必要がありますか? – HyperDevil

    関連する問題