Naoya Murakami
visio****@gmail*****
2016年 1月 5日 (火) 15:00:41 JST
村上です。 なるほど、そういう事情があってgrn_raは8byteまでとされていたのですね。 8byte以上のgrn_raを許可してしまうと、参照ロックフリー下では例外的になっ てしまい、あまりよろしくないですね。 理解しました。他への影響もあるかもしれませんし、変更なくても大丈夫です。 とりあえず、8byte以上の固定長カラムを使えない前提で、私の用途でgrn_jaを 使った場合の性能や精度を検証したいと思います。 64ビットでも次元数がでかすぎなければ、そこそこの精度がでるっぽいので、 64ビットまででもいいかなぁと思ったりもしてます。 (あとは欲しい高類似度部分だけminhashじゃなくて真の類似度を再計算したり するとかでもいいかも) どうもありがとうございました。 今年もよろしくお願いします。 2016年1月5日 13:52 Susumu Yata <yata****@razil*****>: > 矢田です. > > 村上さんの指摘通り, grn_ra は 8 bytes より大きな要素に対応しています. > しかし,要素が 8 bytes より大きくなると,アトミックに更新できなくなるため, > 更新中の参照で不完全なデータが見える可能性があります. > たとえば, 16 bytes の要素について,前半は更新前,後半は更新後というように, > 中途半端なデータを取り出してしまうケースが考えられます. > > grn_ja については,新しいデータは新しい領域に配置し,位置情報をアトミックに > 書き換えることで上述の問題を回避しています. > > 固定長の要素を保存するカラムなのに grn_ja を使っている理由は以上で, > 参照ロックフリーを維持するため, grn_ra を使うわけにはいかないのです. > > そういうわけで,使い方がシングルスレッド限定だったり,多少の誤りは気に > しなかったりするのであれば, grn_ra を使えるようにするのもありかもしれません. > ただ,「参照ロックフリーです,ただし○○は除く」的な存在になるのが気になります. > 後は,ほかのところで問題が出るかもしれないのが少し怖いところです. > > 今年もよろしくお願いいたします. > > > 2016年1月5日 0:16 Naoya Murakami <visio****@gmail*****>: > > 村上です。 > > > > 現在、grn_column_createではsizeof(int64_t)=8バイトを超えるものは > > 可変長カラムのgrn_ja_createが利用されるようになっています。 > > https://github.com/groonga/groonga/blob/v5.1.1/lib/db.c#L4518 > > > > 一方、固定長カラムのgrn_ra_createはもっと大きいサイズでも入るように > > デザインされていると思います。 > > https://github.com/groonga/groonga/blob/v5.1.1/lib/store.c#L36-L39 > > > > ビルトイン型だけの場合、固定長カラムはINT64まででいいと思うのですが、 > > C-APIのgrn_type_createを使って、UINT128,256とかもう少し大きいものを > > 保存したいと考えています。 > > > > 具体的な私のユースケースとしてはカラムのminhash値の最下位ビットk個を > > 保持しておいて高速に類似計算することを実験しています。 > > https://github.com/naoa/groonga-minhash > > kが多いほど精度を上げられるため、64ビット以上のビット列を保持したいと > > 思っています。 > > > > SHORT_TEXTと区別するだけでいいなら、たとえば、以下のように4096以上 > > の場合のみgrn_ja_createにするようにしてもらえないでしょうか? > > > > if ((flags & GRN_OBJ_KEY_VAR_SIZE) || value_size >= 4096) { > > > > 以上、ご検討よろしくお願いします。 > > > > > > _______________________________________________ > > groonga-dev mailing list > > groon****@lists***** > > http://lists.osdn.me/mailman/listinfo/groonga-dev > > > > > > -- > Susumu Yata <yata****@razil*****> > _______________________________________________ > groonga-dev mailing list > groon****@lists***** > http://lists.osdn.me/mailman/listinfo/groonga-dev > -------------- next part -------------- HTML$B$NE:IU%U%!%$%k$rJ]4I$7$^$7$?(B... Télécharger