2017-05-12 11 views
0

私はデータ配信について質問しました。データベースにテキストデータを配布する方法

Iは、例えば、テキストのための大規模なテキストは億の段落を持ってきたし、彼らは私が各段落を分離し、別の行に保存

段落は種類によって分類されたい毎日

を成長しています。どの段落にもいくつかの型があります。たとえば、10 000型があります。

私は2つのBADアイデア

  1. 1つのテーブル内のすべてのデータを保存してきました。 - プログラムは遅くなります

  2. 各10 000のテーブルを作成します。 - 私はちょうどそれが悪い考えだということを知っている

私の質問は、どのようにデータベースにそれを配布するためのデータを分離する方法ですか?

+0

通常、1つのテーブルが移動する方法です。ただし、データ構成は、データの使用方法に基づいている必要があります。また、「数十億の段落」は「何百ギガバイト」を示唆しています。私はSQLite以外のデータベースを提案するかもしれません。 –

+0

ありがとうございましたGordon、 ユーザーはデータ型を使用してデータを選択します。たとえば、SELECT * FROM TABLE WHERE TYPE = "TYPE"のようになります。 あなたは1つのテーブルでそれが遅くなると思いますか? –

+0

テキストファイルのデータの形式は?それはCSVですか? –

答えて

3

すべてのデータを1つのテーブルに入れても問題ありません。

データ構造と使用法が、データがすべて1つのテーブルにあることを意味しているとすれば、それらを1つのテーブルに入れる必要があります。テーブルに何十億もの行があることは間違いありません。堅牢なODBMがこれを処理できます。 (ただしGordon Linoffのコメントでは、SQLiteよりも洗練されたものを検討するべきです)。

インデックスは、データのサブセットを効率的に抽出する方法です。

は、あなたがこのようなクエリを使用してデータを取得することを述べた:

select * from table where type = 'type'; 

あなたはタイプフィールドにインデックスをつけた場合、それが効率的にすべての億レコードを検索することなく、これらの行を抽出することができます。列に索引を作成するための基本的な構文はそうのようなものです:

create index index_name on table_name (column_name); 

パフォーマンスの増加に関連している可能性がある、あなたのODBMSに応じて、様々なオプションが、ありますが。

関連する問題