Michisu, Toshikazu
michi****@maric*****
2011年 11月 18日 (金) 11:17:08 JST
初めて投稿します。マリーチの道須と申します。 grnwrapというスクリプトを書いた者です。 (https://github.com/michisu /grnwrap) いつもGroongaを便利に利用させていただいています。 load文の実行で不思議な現象に出会いましたので、ご報告いたします。 OS: Amazon Linux 64bit(EC2) Groongaのバージョン: 1.2.3 現象: groongaコマンドによるload文の連続実行で一部のカラムの値が混ざる 後述の(1)のように、1文書が含まれたload文を複数回(〜数万回)記述したファ イルがあります。 このファイルをgroongaコマンドでDBに読み込ませると、一部のレコードの一部 のカラムの値が破損します。 読み込み後、(2)のように、 item_id(正): "fa9442097ecc7d21d9500de661ffd93fe85020fc" が、 item_id(誤): "salus-naturalbeauty_PT-31-13-000087440fc" に変わっています。 当然ながら、load文を記述したファイル内に、同じ_keyのレコードは複数存在し ません。 この誤った値はシステム上に存在しないため、謎だと思っていたのですが、該当 ファイル内の(1)よりも後ろに(3)のレコードがあることを発見しました。 item_id: "salus-naturalbeauty_PT-31-13-00008744" この値と、正しい値の末尾が連結されている(上書きされている)ように見えます。 なお、(3)のレコードは正しく登録されているようです。 item_id以外のカラムでの発生は確認していません。 また、新規にDBを作成し、同じファイルを読み込ませたところ、(少なくともこ のレコードに関しては)値の破損は起こりませんでした。 スキーマは(4)の通りです。 何か情報が足りなかったり、行っている方法がまずければご指摘をいただけると 助かります。 以上、よろしくお願いいたします。 (1) 読み込ませたファイルの一部(1レコード分) load --table Item --input_type json [{"category_id_full": "0237 0238 0270", "discount_price": null, "taste_ids": [], "real_price": "1999", "brand_id": 30546, "colors": "", "shop_id": 182, "discount_rate": 0, "category4": "", "brand_url_name": "pink_adobe", "on_sale": false, "shop_name": "ワールドダイレクトスタイ ル", "source": "VC", "brand": "PINK ADOBE", "stock": "", "category1": " 服飾雑貨", "brand_name_long": "PINK ADOBE (ピンクアドベ)", "category3": "手袋", "category2": "服飾雑 貨", "start_at": "", "description": "シャカシャカのナイロン生地で手を冬 の寒さから守るグローブです。ちょうど手首の位置にはアニマルモチーフの ファーが。", "shop_initial_ja": "ワ", "saled_at": "", "price": "1999", "brand_initial_en": "P", "brand_initial_ja": "ヒ", "url_name1": "fashion-accessories", "item_id": "fa9442097ecc7d21d9500de661ffd93fe85020fc", "merchant_id": "2209887", "category_id": 270, "is_deleted": 0, "name": "pink adobe (ピンクアドベ)> リボン×ファー付きナイロングローブ", "shop_initial_en": "W", "sizes": "", "_key": 9940837, "gender": "2", "created_at": 1321196400.0, "shop_url_name": "directstyle-world", "shop_rank": "3", "category_active_id_full": "0238 0270", "materials": "ナイロン", "shuffle_code": "16109", "url_name2": "fashion-accessories_ladies", "url_name3": "fashion-accessories_ladies_glove", "url_name4": ""}] (2) ファイルを読み込ませた後の確認 $ groonga /path/to/db > select Item --query '_key:9940837' [[0,1321322604.82577,0.015070025],[[[1],[["_id","UInt32"], ["_key","UInt64"],["url_name4","ShortText"],["url_name3","ShortText"], ["url_name2","ShortText"],["url_name1","ShortText"], ["transition_7d","UInt64"],["transition_30d","UInt64"], ["transition_1d","UInt64"],["transition","UInt64"], ["taste_ids","UInt32"],["source","ShortText"],["sizes","ShortText"], ["shuffle_code","UInt16"],["shop_url_name","ShortText"], ["shop_rank","Int16"],["shop_name","ShortText"], ["shop_initial_ja","ShortText"],["shop_initial_en","ShortText"], ["shop_id","UInt32"],["saled_at","Time"],["real_price","UInt32"], ["price","UInt32"],["postage_free","Bool"],["popularity_7d","UInt32"], ["popularity_30d","UInt32"],["popularity_1d","UInt32"], ["on_sale","Bool"],["name","Text"],["merchant_id","ShortText"], ["materials","ShortText"],["liked_at","Time"],["like_count","UInt32"], ["item_id","ShortText"],["ic_id","ShortText"],["gender","Int8"], ["entry_count","UInt32"],["dislike_count","UInt32"], ["discount_rate","UInt8"],["discount_price","UInt32"], ["designs","ShortText"],["description","LongText"], ["created_at","Time"],["colors","ShortText"], ["category_initial_ja","ShortText"],["category_initial_en","ShortText"], ["category_id_full","ShortText"],["category_id","UInt32"], ["category_active_id_full","ShortText"],["category4","ShortText"], ["category3","ShortText"],["category2","ShortText"], ["category1","ShortText"],["brand_url_name","ShortText"], ["brand_name_long","ShortText"],["brand_initial_ja","ShortText"], ["brand_initial_en","ShortText"],["brand_id","UInt32"], ["brand","ShortText"]],[976438,9940837,"","fashion- accessories_ladies_glove","fashion-accessories_ladies","fashion- accessories",0,0,0,0,[],"VC","",16109,"directstyle-world",3,"ワールドダ イレクトスタイル","ワ","W",182,0.0,1999,1999,false,0,0,0,false,"pink adobe (ピンクアドベ)リボン×ファー付きナイロングローブ","2209887","ナイロ ン",0.0,0,"salus-naturalbeauty_PT-31-13-000087440fc","",2,0,0,0,0,""," シャカシャカのナ イロン生地で手を冬の寒さから守るグローブです。ちょうど手首の位置にはアニ マルモチーフのファーが。",1321196400.0,"","","","0237 0238 0270",270,"0238 0270","","手袋","服飾雑貨","服飾雑貨","pink_adobe","PINK ADOBE (ピンクアドベ)","ヒ","P",30546,"PINK ADOBE"]]]] (3) 読み込ませたファイルの一部(関連するレコード?) [{"category_id_full": "0001 0002 0064 0067", "discount_price": null, "taste_ids": [], "real_price": "2490", "brand_id": null, "colors": "", "shop_id": 383, "discount_rate": 0, "category4": "その他", "brand_url_name": null, "on_sale": false, "shop_name": "サルース - Yahoo!ショッピング", "source": "YS", "brand": "", "stock": "instock", "category1": "ファッション", "brand_name_long": null, "category3": "パン ツ", "category2": "ウェア", "start_at": "", "description": "パンツ サロ ペット グレンチェック サスペンダー,商品名:グレンチェックサロペットパンツ 8744 デイリースタイルにも使いたいサロペット! トレンドのグレンチェック でブリティッシュな雰囲気♪ フロントの大きめボタンが大人カワイイ女の子コー デにピッタリ♪ サスペンダーの取り外し、長さ調整も可能。 ■サイズ実寸 (cm):W約72、H約108、股上32.5、股下約6.5、裾幅約28、サスペンダー約94(全 長) ■素材(%):レーヨン80、ポリエステル20 ■詳細:MADE IN CHINA、ドライク リーニング、透け感ナシ、伸縮性ナシ、裏地ナシ、手洗い、サスペンダー長さ調 整可 ■フィッティング:普段通りのサイズ感です(個人差アリ) ■詳細:ウエスト (背面)ゴム、サスペンダー取り外し可 ※本サイトではサイズ展開を「F(フ リー)」と記載しております。 商品によってタグに「M」と記載されている場合 がございますが、上記サイズに相違はございません。 パンツ サロペット グレ ンチェック サスペンダー ハイウエスト 金ボタン", "shop_initial_ja": "サ", "saled_at": "", "price": "2490", "brand_initial_en": "", "brand_initial_ja": "", "url_name1": "fashion", "item_id": "salus-naturalbeauty_PT-31-13-00008744", "merchant_id": "salus-naturalbeauty", "category_id": 67, "is_deleted": 0, "name": "グレ ンチェックサロペットパンツ 111109 8744", "shop_initial_en": "S", "sizes": "", "_key": 9715954, "gender": "2", "shop_url_name": "y_salus-naturalbeauty", "shop_rank": "3", "category_active_id_full": "0002 0064 0067", "materials": "ポ リエステル", "url_name2": "fashion_ladies-clothing", "url_name3": "fashion_ladies-clothing_pants", "url_name4": "fashion_ladies-clothing_pants_etc"}] (4) スキーマ table_create Item TABLE_HASH_KEY UInt64 column_create Item url_name4 COLUMN_SCALAR ShortText column_create Item url_name3 COLUMN_SCALAR ShortText column_create Item url_name2 COLUMN_SCALAR ShortText column_create Item url_name1 COLUMN_SCALAR ShortText column_create Item transition_7d COLUMN_SCALAR UInt64 column_create Item transition_30d COLUMN_SCALAR UInt64 column_create Item transition_1d COLUMN_SCALAR UInt64 column_create Item transition COLUMN_SCALAR UInt64 column_create Item taste_ids COLUMN_VECTOR UInt32 column_create Item source COLUMN_SCALAR ShortText column_create Item sizes COLUMN_SCALAR ShortText column_create Item shuffle_code COLUMN_SCALAR UInt16 column_create Item shop_url_name COLUMN_SCALAR ShortText column_create Item shop_rank COLUMN_SCALAR Int16 column_create Item shop_name COLUMN_SCALAR ShortText column_create Item shop_initial_ja COLUMN_SCALAR ShortText column_create Item shop_initial_en COLUMN_SCALAR ShortText column_create Item shop_id COLUMN_SCALAR UInt32 column_create Item saled_at COLUMN_SCALAR Time column_create Item real_price COLUMN_SCALAR UInt32 column_create Item price COLUMN_SCALAR UInt32 column_create Item postage_free COLUMN_SCALAR Bool column_create Item popularity_7d COLUMN_SCALAR UInt32 column_create Item popularity_30d COLUMN_SCALAR UInt32 column_create Item popularity_1d COLUMN_SCALAR UInt32 column_create Item on_sale COLUMN_SCALAR Bool column_create Item name COLUMN_SCALAR Text column_create Item merchant_id COLUMN_SCALAR ShortText column_create Item materials COLUMN_SCALAR ShortText column_create Item liked_at COLUMN_SCALAR Time column_create Item like_count COLUMN_SCALAR UInt32 column_create Item item_id COLUMN_SCALAR ShortText column_create Item ic_id COLUMN_SCALAR ShortText column_create Item gender COLUMN_SCALAR Int8 column_create Item entry_count COLUMN_SCALAR UInt32 column_create Item dislike_count COLUMN_SCALAR UInt32 column_create Item discount_rate COLUMN_SCALAR UInt8 column_create Item discount_price COLUMN_SCALAR UInt32 column_create Item designs COLUMN_SCALAR ShortText column_create Item description COLUMN_SCALAR LongText column_create Item created_at COLUMN_SCALAR Time column_create Item colors COLUMN_SCALAR ShortText column_create Item category_initial_ja COLUMN_SCALAR ShortText column_create Item category_initial_en COLUMN_SCALAR ShortText column_create Item category_id_full COLUMN_SCALAR ShortText column_create Item category_id COLUMN_SCALAR UInt32 column_create Item category_active_id_full COLUMN_SCALAR ShortText column_create Item category4 COLUMN_SCALAR ShortText column_create Item category3 COLUMN_SCALAR ShortText column_create Item category2 COLUMN_SCALAR ShortText column_create Item category1 COLUMN_SCALAR ShortText column_create Item brand_url_name COLUMN_SCALAR ShortText column_create Item brand_name_long COLUMN_SCALAR ShortText column_create Item brand_initial_ja COLUMN_SCALAR ShortText column_create Item brand_initial_en COLUMN_SCALAR ShortText column_create Item brand_id COLUMN_SCALAR UInt32 column_create Item brand COLUMN_SCALAR ShortText table_create ItemIndex TABLE_PAT_KEY|KEY_NORMALIZE ShortText --default_tokenizer TokenBigram column_create ItemIndex category_id COLUMN_INDEX|WITH_POSITION Item category_id_full column_create ItemIndex colors COLUMN_INDEX|WITH_POSITION Item colors column_create ItemIndex designs COLUMN_INDEX|WITH_POSITION Item designs column_create ItemIndex fulltext COLUMN_INDEX|WITH_POSITION Item name,description column_create ItemIndex materials COLUMN_INDEX|WITH_POSITION Item materials column_create ItemIndex name COLUMN_INDEX|WITH_POSITION Item name column_create ItemIndex sizes COLUMN_INDEX|WITH_POSITION Item sizes column_create ItemIndex taste_ids COLUMN_INDEX Item taste_ids -- 株式会社マリーチ / Marici, Inc. 東京都渋谷区渋谷3-5-16 渋谷三丁目スクエアビル2F http://www.marici.co.jp/ TEL 03-5843-6456 / FAX 03-4333-0282 道須利一 / Michisu, Toshikazu michi****@maric*****