-1

これは正確な質問ではありませんが、この問題について意見を求めているだけです。

会社で初めての仕事をしています。彼らは、mysql db の全文検索を最適化するように私に依頼しました。

さて、データベースの構造を見た途端、文字通り表情が変わりました。

これは自動車部品データベースで、ID、part_number、xml という 1 つのテーブルと 3 つの列があります。

これを理解していないのは私が愚かなだけですか、それともすべてを入れて、ENORMOUS xmlテキスト内の各製品に関するすべての情報を言っているのですか? 私はそれを理解していないので、説明が必要です。その製品に関するそれぞれの異なる情報 (たとえば、色、サイズ、メーカーなど) をそれぞれの異なる列に入れることはできなかったのでしょうか? または、オブジェクト ベースの非リレーショナル DB (Mongo など) を使用しますか? これを使用して XML テキストの「全文」検索を有効にして関連項目を返すのは「通常の」慣行ですか?

私が本当に愚かで理解できないか、DBが完全にナンセンスであることを教えてください。

前もって感謝します。

4

2 に答える 2

0

彼らが得る問題は、さまざまな部分の属性の数が終わりのないリストであり、それらのいくつかは多くの部分に共通であり、いくつかはそうではないということです。属性ごとに列を配置しようとすると、何千もの列になってしまいます-いくつかのRDBMSでそれを処理するためのいくつかの技術があります-スパース列/テーブル。

別の方法は、part_id、attribute、valueを格納している属性テーブルに属性を正規化することです。これは非常に大きなKey-Valueテーブルになり、カーディナリティが急速に増大します。これらの値の一部は異なるタイプである可能性があります。かなり大きくなる可能性があります。それらも複製されるので、再度正規化して、さまざまなタイプの複数の値フィールドがあるか、バリアントデータ型を格納する必要がある、苦痛なパフォーマンスと恐ろしいシナリオのうさぎの穴を掘り下げたことに気付くことができます。

最後の代替手段は、フィールド/ストアXMLをFTSすることです。これは、誰かが選択したものです。

誰かが選択をしました。おそらく初めてRDBMSで表示されるかもしれませんが、おそらく最後ではありません-リレーショナルストレージにいる間-元の作成者とは異なる方法でそれを行う方法を検討してください(RDBMSの制限内で) 。

異なる属性を持つアイテムの属性情報を保存することは常に厄介な問題です-私は過去に人々が取った3つのオプションすべてを見てきました。

于 2012-09-11T16:59:48.203 に答える
0

まあ、あなたが説明した方法は本当にちょっとばかげているように見えます。データ構造の変更について何も知らずに何とも言えませんが、全文検索よりは何でもいいと思います。

于 2012-09-11T16:58:54.267 に答える