[groonga-dev,00625] groongaコマンドによるload文の連続実行で一部のカラムの値が混ざる

Back to archive index

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*****




groonga-dev メーリングリストの案内
Back to archive index