2016-06-25 2 views
2

私は現在usecaseのNoSQL技術を評価中です。 私は多くのセンサーデータログ(数TB)を持ち、スケーラブルで効率的な方法でデータを分析したいと考えています。センサーデータのグラフデータベース - 関係をモデル化する方法?

私のセンサーデータには、タイムスタンプ、場所、センサー属性名(たとえば「温度」)およびセンサー属性値(たとえば12.9℃)のリストが含まれています。ただし、その場所は私のすべてのデータエントリに存在しません。また、エントリごとの属性のリストも変化します。

  • 日時

    • sensor_id:1つの
    • 場所:緯度/経度 だからつのログエントリは次のようにデータを含めることができます(しかし常にではないは、各エントリに含ま注):timestamp_of_log_date
    • attribute_name1: "attribute_value1"
    • attribute_name2:123123
    • attribute_name3:0.933
    • attribute_nameN: "attribute_valueN"

    私は最近、グラフデータベースを見て、興味深い概念を見つけました。私のユースケースをグラフデータベースに適用するかどうかは、私のデータ間の関係が(おそらく)不足しているためにはわかりません。

    私のセンサデータとの間の関係をモデル化するが、今の私は、次の関係を考えることができるいくつかの方法があります。

    • 日のエントリの/時間Year-> Month->日 - >へHour-> Minute-> Continent-へのエントリの
    • 第二の場所>国別>状態 - >シティ - >ストリート/ POI
    • センサーID->

    属性名は、私は私のデータを照会していますジオスペースクエリ、時間エイリアスと「通常の」属性クエリー(field_x < = 1000)です。

    もう1つ注意すべきこと:地理空間クエリを実行しているとき、私は通常、空間クエリで見つかったレコードのタイムスタンプに基づいてさらにレコードを読み込みたいと思っています。したがって、私の地理空間クエリが終了し、タイムスタンプ "25.06.2016-20:40:30"のレコードを返すと、ジオスペースクエリで見つかったレコードごとに1分以内にタイムスタンプを持つ他のすべてのレコードも読み込みたいと思います。

    たとえば、Neo4jは地理空間クエリを処理するのに適しています。これは、私の用途にとって非常に一般的なクエリタイプです。しかし、私はどのように私のデータをモデル化するだろうか?私のノードはどのように他のノードに接続されていますか?彼らは接続する必要がありますか?

  • +0

    neo4jには空間プラグインを使用できます。 https://github.com/neo4j-contrib/spatial – piyush121

    +1

    このデータを処理するためにグラフデータベースは必要ありません。 –

    +0

    @stdobこのデータを扱うにはグラフデータベースを必要としませんが、それは悪い考えですか? – j9dy

    答えて

    2

    このデータとの関係をモデル化する方法は間違いありませんが、これらの関係をどうすればよいですか?あなたのデータ内の関係があまり価値がない場合、空間クエリのためにNeo4jを使用することに意味はありません(それは素晴らしいグラフデータベースですが!)。

    Neo4jは、データを接続したときに輝きます。その接続から派生する値があります。

    +0

    OrientDBチームによって記述された時系列ユースケースが見つかりました。彼らは基本的に次のような関係を構築しました。時系列ノードは年 - >月 - >日 - >時間と時間で、一連のログエントリにリンクします。それは私が空間データで充実させたにもかかわらず、ほとんど私のユースケースです。しかし私は確信していないことが1つあります...私は自分の位置情報をプロパティとしてログ記録に入れていますか、それとも別の関係を構築していますか?それは多くのクエリに影響を与えますか?参照:http://orientdb.com/docs/2.1/Time-series-use-case.html – j9dy

    +0

    申し訳ありませんが、私はOrientDBにコメントするための十分な知識がありません – Luanne

    関連する問題