1

基本的に、いくつかのデータを含むファイルがたくさんあります。それぞれが異なり、いくつかの変数(null)が欠けているものなど、古典的なものがあります。

やや興味深いのは、各ファイルには最大 1000 個の変数を含めることができ、null ではない値が少なくとも 800 個あるため、「1000 列が必要だ」と思ったことです。言及すべきもう 1 つのことは、整数、ブール値、テキスト、すべてであるということです。それらはサイズとタイプによって異なります。各変数は、すべてのファイルで 100 バイト未満です。それらは異なります。

私はこの質問を見つけましたSQL Server maximum columns limit 1024 and 8kb record size Im unfamiliar of capacity of sql servers and table design, but the thing is: 人々はその質問に答えた人は彼らがデザインを再考すべきだと言います, しかし私はそれをすることができません. ただし、1000 個の変数が残っている限り、既に持っているものを変換できます。

どの SQL サーバーも使用したいと思っていますが、自分の要件に最適なものがわかりません。他のことをした方が良い場合は、そのように伝えてください。

このデータで私がする必要があるのは、見て、比較して、検索することです。これらを変更する機能は必要ありません。それらをそのまま使用し、それらをプレーンテキストファイルとして保持してから読み取ることを考えました。これは、これらのファイルの「少数」からデータを表示するために「数秒」のphpランタイムを必要とし、それは多すぎます。検索を行うには、これらのファイルを約 1000 個以上チェックする必要があるという事実を考慮していません。

問題は、それぞれ 1000 個の変数を持つ 1000++ エンティティを持ち、それらの中で必要な変数を検索/比較する最速の方法は何ですか? また、その SQL の場合、この種のものに最適な SQL サーバーはどれですか?

4

4 に答える 4

1

EAV モデルを使用したい。これはかなり一般的です

于 2013-12-05T21:44:00.103 に答える
1

あなたがしていることのために別の種類のデータベースが必要なようです。MongoDB などのドキュメント データベース、または従来のテーブル構造とは異なる方法でデータを操作できる、SQL だけではないデータベースの 1 つを考えてみましょう。

あなたも読んでいるだけだというメモを見ました。同様のデータセットでSolrを使用して幸運に恵まれました。

于 2013-12-05T20:19:02.173 に答える
0

あなたは最善を求めています、私は答えを与えることができます(私はそれをどのように解決したか)、しかしそれが(あなたの環境で)「最善」の方法であるかどうかは言えません。 NSA - 冗談)

私の魂は:

PC ごとに 1 つのテーブル (ファイルはありますか?)

テーブル ファイル: ファイルごとに 1 行、PK FILE_ID

テーブル File_data ファイル内の列ごとに 1 行、PK FILE_ID、ATTR_ID、ATTR_NAME、ATTR_VALUE、(ATTR_TYPE)

テーブル File_data は - どういうわけか - 大きかった (>1e6 行) が、DB はそれを高速に処理した

HTH

編集:

最近、私は自分のアンサーがかなり不足していました。私の(そしてまだ機能している)ソリューションに追加情報を追加したい:

「情報ソースごと」のテーブルには、2 つ以上のフィールドがありますPK, FILE_IDISOURCE, ITYPE、ISOURCEとITYPEはどこから(私は多くの情報源を持っていました)、それがどのような基本的な情報タイプであるかを説明しています/だった。これは、構造をクエリに組み込むのに役立ちます。USBデバイスを検索するときに、「スイッチ」または「モニター」からのデータを含める必要はありませんでした(編集:おそらく今日まで:はい)

属性テーブルにもさらに多くのフィールドがありました。ここで両方のフィールドについて言及します。ISOURCE, ITYPEはい、上記と同じですが、意味が少し異なります。背後にある同じ考え方

これらのフィールドに何を入力する必要があるかは、データによって異なります。

どのような情報を収集する必要があるかを詳しく見てみると、そのための「重要な価値」がいくつか見つかると確信しています。

于 2013-12-05T21:46:39.593 に答える