2016-07-12 5 views
0

私は、ほぼ静的な200GBの構造化されたクリーンなデータセットをホストするソリューションを探しており、Webアプリケーションでクエリを行うためにデータにJSON APIを提供します。200GBのデータをホストし、JSON APIに集約を提供するソリューション?

私のデータの各行は、次のようになります、と私は約700万行を持っている:

parent_org,org,spend,count,product_code,product_name,date 
A31,A81001,1003223.2,14,QX0081,Rosiflora,2014-01-01 

データは、ほぼ完全に静的なものである - それは月に一度更新されます。私のような単純な集計クエリをサポートしたいと思います:

  • が月によって

、月によって

  • が親組織A31総支出を取得し、組織によって、QXを開始、製品コード上の総支出を取得し、これらのクエリをRESTful JSON APIで使用できるようにして、Webアプリケーションでデータを使用できるようにします。

    私は結合を行う必要はありません、私は1つのテーブルがあります。私は(APIを提供するために、ウェブアプリで)のPostgresを使ってきたが、私はインデックス化で何ができるかの限界に到達するために始めていますこれまで

    • をしてマテリアライズド・ビューを:私が調査した

      ソリューション専用のハードウェアとスキルを持たず、私の持っているスキルとスキルはありません

    • Google Cloud Datastore:このサイズの構造化データに適していて、JSON APIは焼き付けられていますが集約はしていません上記の「総支出」クエリ)
    • Google BigTable:間違いなくこのサイズのデータ​​を作成できます。集計を実行できます。 App Engineを使用した独自のAPIですか?データをインポートしてhbaseに変換する必要があるかもしれません。
    • GoogleのBigQueryは:速い集計で、データ

    上記の私のニーズのための一般的な解決策があります場合、私は思ったんだけどをインポートするのは簡単、BigTableのと同じように自分のAPIをロールバックする必要があります。そうでない場合は、このデータをホストしてJSON APIを提供するための最適な設定に関するアドバイスについても感謝します。

    更新:ISNので、クエリで払っているので、BigQueryのクラウドSQLのサポートSQLに似たクエリが、クラウドSQLの大きさが十分でないかもしれません(コメントを参照)とBigQueryのは非常に迅速に高価得るようですパブリックウェブアプリには理想的ではありません。データストアは優れた値ですが、集計は行いません。事前集計を行い、複数のテーブルを作成する必要があります。

  • +0

    ここでCloud SQLはオプションですか?サイジングFAQ - https://cloud.google.com/sql/faq#sizeqps –

    +0

    @SolomonDuskisありがとうございます。それは十分に大きくなるように見えます:)このサイズのデータ​​セットではパフォーマンスが高いでしょうか?または、答えは(Postgresの場合と同様に)「あなたが実際のデータを試してみるまで知らないでしょうか? – Richard

    +0

    私は分かりません。私はもっ​​と雲の巨大な男、私自身です。クラウドSQLから誰かにチャイムを入れることができるかどうかを見てみましょう。 –

    答えて

    1

    ElasticSearchをご覧ください。それは、JSON、REST、クラウド、分散型、集約型のクエリなどです。あなたが探しているものかもしれないし、そうでないかもしれない。

    +0

    ありがとう!この多くのデータにうまく対応できるでしょうか? – Richard

    +0

    これはクラウド(弾性クラスター)で動作するように設計されています。より多くのノードを生成することで、動的にスケールアップできます。明らかに、これには、そのようなサービスを実装する方法を知っているアーキテクト(AWSなど)が必要です。私は小さなプロジェクトで使ってきましたが、クラスタリングの面を研究しなければなりませんでした。私は彼らのために働いていないので、私が言いたいことは、私が上限を知ることができないということです。どのくらいのお金/ノードを投げるかによって決まります。 – pid

    +1

    無料で入手し、いくつかのチュートリアルを勉強し、手順的に生成されたデータをデスクトップPCまたは同様のセットアップでテストしてください。 10〜100 GBのテストデータで非常に簡単なセットアップを勉強してテストするには、約2〜3営業日かかります。あなたが必要とするものをまっすぐに指摘し、他のすべての機能を無視するか、または迅速な技術的実現可能性/ストレステストのために勉強するにはあまりにも多くの時間を要します。 – pid

    3

    あなたのニーズにはCloud SQLが十分です。 Cloud SQL Second Generationを使用している場合は、確かに200GBを処理できます。

    クエリが非常に複雑でインデックスに登録されていない場合は、MySQL(Cloud SQLデータベースが使用するデータベース)などの従来のデータベースでは不十分かもしれません。 Cloud SQLを使用することをお勧めします。パフォーマンスが十分でない場合は、十分なインデックスがあることを確認してください(ヒント:照会の実行方法を確認するにはEXPLAIN statementを使用してください)。

    クエリが有用な方法でインデックスに登録できない場合、またはクエリがCPUに集中してインデックスに関係なく遅くなる場合は、BigQueryまで卒業することをお勧めします。 BigQueryは並列化されているため、大量のデータを扱うことができますが、リアルタイムでの使用には最適化されておらず、Cloud SQLの「MySQL in a box」と同じくらい適していません。

    関連する問題