2009-08-26 18 views
17

私はいくつかのオブジェクトの監視に興味があります。私は15分ごとに約10000のデータポイントを取得する予定です。 (最初はそうではないかもしれませんが、これは「一般的な野球場」です)。毎日、毎週、毎月、毎年の統計を取得できるようにしたいと思います。 2か月以上にわたって最高の解像度(15分)でデータを保持することは重要ではありません。時系列データを保存するのに最適なオープンソースソリューションは何ですか?

私はこのデータを保存するさまざまな方法を考えており、古典的なリレーショナルデータベースや(SimpleDBなどの)スキームレスデータベースを見てきました。

私の質問は、これを行うための最善の方法は何ですか?私は非常に独自の高価なものにオープンソース(そして無料)ソリューションを好むでしょう。

小メモ:私はこのアプリケーションをPythonで書いています。

+0

おそらくビニングソリューションのいくつかの並べ替えを探しています。この関連する質問の議論が参考になるかもしれません:http://stackoverflow.com/questions/1248815/percentiles-of-live-data-capture/1249003#1249003 –

答えて

11

HDF5は、h5pyまたはPyTablesでアクセスでき、非常に大きなデータセットを処理するために設計されています。どちらのインターフェースもうまく機能します。たとえば、h5pyとPyTablesの両方に自動圧縮があり、Numpyをサポートしています。

+0

これは非常に興味深いようですが、私はそれをチェックアウトします。 – lorg

8

RRDTool Tobi Oetikerさん、間違いなく!オープンソースであり、まさにこのような使用例のために設計されています。

EDIT:

いくつかのハイライトを提供するには、次のrrdtoolはラウンドロビンデータベースの時系列データを格納します。一定期間の生データを保持し、設定可能な方法でデータを圧縮し、1ヶ月間のデータを細かく、過去6ヶ月間の平均データを1週間以上、最後のデータの平均データを1ヶ月間平均します2年。副作用として、データベースは、常に同じサイズのままです。(あなたが汗を出すことがないので、ディスクがいっぱいになる可能性があります)。これはストレージ側でした。検索側では、RRDToolはすぐにドキュメントやWebページに含めることができるグラフ(例:png)に変換されるデータクエリを提供します。これは、以前のMRTG(これについて聞いたことがあるかもしれません)よりもはるかに一般化された形式の、堅実で実証済みのソリューションです。そして、あなたがそれに入ったら、それを何度も何度も何度も繰り返し使用することに気付くでしょう。

RRDToolを使用する人と簡単な概要については、hereも参照してください。作成できるグラフィックの種類を確認する場合は、galleryをご覧ください。

+0

私はRRDToolを知っていました。別の「投票」をするのは良いことです。私はもっ​​と深くそれを調べます。余談ですが、Pythonでそれとインタフェースできるかどうか知っていますか? – lorg

+0

@lorg私は自分で試したことはありませんが、ドキュメントにはPythonバインディングが明示的に記載されています(http://oss.oetiker.ch/rrdtool/prog/rrdpython.en.html) – ThomasH

+0

Pythonバインディングがあります。私が最後に見た(ずっと前)、彼らはうまくいっていませんでした。私は、このクラスのようにサブプロセス呼び出しでCLIをラップするだけです。http://code.google.com/p/perfmetrics/source/browse/trunk/lib/rrd.py –

1

プレーンテキストファイルですか? 15分あたりの10kデータポイントがバイト単位で換算されることは明らかではありませんが、テキストファイルは保存/アーカイブ/転送/操作が容易で、見るだけで直接調べることができます。 Pythonでの作業もかなり簡単です。

1

これはかなり標準的なデータウェアハウスのものです。

多くのディメンションで編成された「事実」はたくさんあり、そのうちの1つは時間です。多くの集計。

多くの場合、defaultdictに基づいた単純な集約アルゴリズムで処理する単純なフラットファイルは、すばやく簡単に処理できます。 Efficiently storing 7.300.000.000 rows

Database choice for large data volume?

0

見て、私が書いた積極的な開発(.NETのみ今のところ)の下でオープンソースの時系列データベースがあります。これは、大量の(テラバイト)均一データを「バイナリフラットファイル」形式で格納することができます。すべての使用法は、ストリーム指向(順方向または逆方向)です。私たちは積極的に当社の株価情報の蓄積と分析に使用しています。

https://code.google.com/p/timeseriesdb/

// Create a new file for MyStruct data. 
// Use BinCompressedFile<,> for compressed storage of deltas 
using (var file = new BinSeriesFile<UtcDateTime, MyStruct>("data.bts")) 
{ 
    file.UniqueIndexes = true; // enforces index uniqueness 
    file.InitializeNewFile(); // create file and write header 
    file.AppendData(data); // append data (stream of ArraySegment<>) 
} 

// Read needed data. 
using (var file = (IEnumerableFeed<UtcDateTime, MyStrut>) BinaryFile.Open("data.bts", false)) 
{ 
    // Enumerate one item at a time maxitum 10 items starting at 2011-1-1 
    // (can also get one segment at a time with StreamSegments) 
    foreach (var val in file.Stream(new UtcDateTime(2011,1,1), maxItemCount = 10) 
     Console.WriteLine(val); 
} 
関連する問題