Kouhei Sutou
kou****@clear*****
2012年 4月 18日 (水) 18:05:30 JST
須藤です。 In <20120****@gmail*****> "[groonga-dev,00781] ベクターカラムをソート順に使えるか" on Wed, 18 Apr 2012 10:40:37 +0900, Shinya Kawaji <kawaj****@gmail*****> wrote: > 全体として数十万件のデータが有り、主キーは数字になっています。 > > 全文検索が主なのですが、ソート順の指定が別にあり、それが「約 50個の > キーのうち、優先とするものをいくつか選ぶ」ということになっています。 ... > これを単純に実装する場合、ソート用のカラム A〜Zを全て追加することになる > と思います。 > > ただこのカラムはソート用のものであり、検索条件や出力には使用しません。 > ソート用だけのために 50個ものカラムを追加することに抵抗を感じます。 50個のカラムを追加するのがいいと思います! 理由は、ベクターカラムでソートできないというのももちろんあり ますが、50個のカラムを追加するほうが効率的だからです。 仮にベクターカラムでソートできたとします。その場合、例えば、 1,2,3番目の値だけがソートに必要なのにも関わらず、50個すべて の値をメモリ上に読み込む必要があります。 しかし、カラムを別に作ると必要なカラムの値のみ読み込むだけで すむのでI/Oが減ることを期待できます。これは、groongaがカラム ストア方式を採用している利点になります。 あと、プログラムの見やすさ的な観点からいうと、「ベクターカラ ムの3番目の値でソート」と書いているよりも「scoreカラムの値で ソート」と書いている方が何をやっているのかがわかりやすい、と いうのがあるので、別々のカラムにして適切な名前をつけた方がよ いのではないかと思いました。 -- 須藤 功平 <kou****@clear*****> 株式会社クリアコード <http://www.clear-code.com/> (03-6231-7270) プログラミングが好きなソフトウェア開発者を募集中: http://www.clear-code.com/recruitment/