0

複数の列を持つデータの表現のようなテーブルが必要です。たとえば、次のサンプルを検討してください。

---------------------------------------------------------------
col1    col2    col3    col4    col5(numeric)    col6(numeric)
---------------------------------------------------------------
val01   val02   val03   val04        05               06
val11   val12   val13   val14        15               16
val21   val22   val23   val24        25               26
val31   val32   val33   val34        35               36
.
.
.
---------------------------------------------------------------

特定の列の値でこのテーブルをクエリしたいと思います。たとえばval32、列の値を検索col2すると、このクエリに一致するすべての行が同じ表形式で返されます。

col5sayやのようないくつかの列については、、、などcol6の数学演算/クエリを実行したいと思います...getMax()getMin()getSum()divideAll()

そのような要件について、私の目的を最もよく解決できるデータ構造のタイプを誰でも提案できますか? 任意の 1 つのデータ構造またはそれらの組み合わせ、効率的な操作 (上記の数学的例など) を考慮し、クエリを実行しますか??

もっと情報が必要な人がいたら教えてください。

Edit: Additional requirement

これは、数億行を処理するのに十分効率的であり、維持するのも簡単で効率的です。

4

3 に答える 3

1

必要なのは、次の 3 つの部分からなるアプローチです。

  1. Row各列のフィールドを含むクラス
  2. List<Row>行を格納し、順次アクセスを提供するためのA
  3. 1 つ以上のMap<String,Row>orMap<Integer,Row>は、さまざまな列の値によって行の高速検索を提供します。列の値が一意でない場合はMultiMap<...>、特定のキーに複数の値を許可するための実装が必要です (インターネットにはいくつかあります)。

オブジェクトは最初にリストに配置され、Rowすべての行をロードした後にインデックスを作成します。

于 2013-06-27T05:37:35.713 に答える
0

以下が役立つと思います:

Map<String,List<Object>>
  1. 「col2」で「val32」を検索し、search(cal2,val32):

cal2(map.get("cal2") に関連付けられたオブジェクトのリストを取得し、それらを繰り返し処理して、この値が存在するかどうかを確認します。

  1. getSum (文字列列名):

繰り返しますが、リストを取得し、これらの値を追加して繰り返します。最終的な合計を返します。

オブジェクトのリストを追加しているため、これらの API から ClassCasteException をスローしたい場合があります。

于 2013-06-27T05:21:17.657 に答える
0

最後に、すべての基本的で複雑な実装を行う代わりに、Mongo Database を使用することを計画しました..

これで問題が解決することを願っています。または、必要な操作の速度、ストレージ、および可用性の点で、これよりも優れたデータベースは他にありますか?

于 2013-06-27T07:16:35.340 に答える