2017-08-23 7 views
0

私の問題はRDBMSモデルによって解決されるようです。しかし、私は実際にMongoDBを使って展開したいと思います。なぜなら、将来的に各レコードに追加する不規則なフィールドがあり、NoSQLデータベーススキルを練習したいからです。あるベンダーによって提供クロスベンダーの時系列データのMongoDBモデル

PE比及びPB比データ:

| Vendor5_ID| PE| PB|date  | 
|----------:|----:|-----:|:----------| 
|  210| 3.90| 2.620|2017-08-22 | 
|  210| 3.90| 2.875|2017-08-22 | 
|  228| 3.85| 2.320|2017-08-22 | 
|  214| 3.08| 3.215|2017-08-22 | 
|  187| 3.15| 3.440|2017-08-22 | 
|  181| 2.76| 3.460|2017-08-22 | 

価格データ及びアナリストは、他のベンダー

|Symbol | Price| Analyst|date  | 
|:------|-----:|-------:|:----------| 
|AAPL | 160|  6|2017-08-22 | 
|MSFT | 160|  6|2017-08-22 | 
|GOOG | 108|  4|2017-08-22 | 

によって提供覆い、私は鍵変換データを有する:

| uniqueID|Symbol |from  |to   | 
|--------:|:------|:----------|:----------| 
|  1|AAPL |2016-01-10 |2017-08-22 | 
|  2|MSFT |2016-01-10 |2017-08-22 | 
|  3|GOOG |2016-01-10 |2017-08-22 | 

| uniqueID| Vendor5_ID|from  |to   | 
|--------:|----------:|:----------|:----------| 
|  1|  210|2016-01-10 |2017-08-22 | 
|  2|  228|2016-01-10 |2017-08-22 | 
|  3|  214|2016-01-10 |2017-08-22 | 

時間範囲クエリを高速に実行したい。

db.PE: 
{ 
_id, 
uniqueID, 
Vendor5_ID, 
value, 
date 
} 

db.PB: 
{ 
_id, 
uniqueID, 
Vendor5_ID, 
value, 
date 
} 

db.Price: 
{ 
_id, 
uniqueID, 
Symbol, 
value, 
date 
} 

db.Analyst: 
{ 
_id, 
uniqueID, 
Symbol, 
value, 
date 
} 

これは良い解決策ですか。私は、各列をコレクションとして保存するアイディアを思いついています。別のベンダーによって追加するデータがはるかに多い場合、どのモデルがベストだと思いますか?

答えて

0

ネストした表または子表のアプローチを使用することを検討します。 mongoのサポートの程度がこの種のサポートのために持っているかどうかはわかりません。この用途にOracle NoSQL Databaseを使用することを検討します。これは、TTLと高いスループット(ストレージエンジンとしてBDBが使用されるため)を使用したネストした表のサポートです。ネストした表では、子/ネストした表にタイムスタンプ付きのPEとPBを格納できますが、親表には/ vendor_idの記号とその他の詳細が保持されます。これにより、クエリが同じ断片に確実に置かれ、異なるコレクションに置かれて、同じ断片があるとは限りません。

+0

次に、クロスストッククエリ(例:2016年9月の株式リストのPE) –

関連する問題