रेल के संदर्भ में, यहाँ एक ActiveRecord प्रवास विकल्प है:
def change
reversible do |dir|
dir.up { change_column :models, :attribute, 'jsonb USING CAST(attribute AS jsonb)' }
dir.down { change_column :models, :attribute, 'json USING CAST(attribute AS json)' }
end
end
मैं नहीं जानता कि यह कैसे स्वीकार कर लिया जवाब प्रदर्शन के लिहाज से की तुलना, लेकिन मैं एक मेज पर इस परीक्षण किया 120 000 रिकॉर्ड के साथ, प्रत्येक रिकॉर्ड में चार json
कॉलम हैं और मुझे उस तालिका को माइग्रेट करने में लगभग एक मिनट लग गए। बेशक, मुझे लगता है कि यह इस बात पर निर्भर करता है कि json
संरचना कितनी जटिल है।
इसके अलावा, नोटिस यदि आपके मौजूदा रिकॉर्ड {}
का डिफ़ॉल्ट मान है, तो आप ऊपर बयान default: {}
में जोड़ने के लिए, क्योंकि अन्यथा आप jsonb
कॉलम होगा है, लेकिन डिफ़ॉल्ट मान '{}'::json
के रूप में रहेगा।
स्रोत
2016-04-07 06:54:02
क्या इस बात पर कोई बेंचमार्क है कि यह कितना तेज़ है? आदर्श रूप से रिकॉर्ड की संख्या के साथ यह कैसे स्केल करता है। – gregoltsov
इसे [एक अलग प्रश्न] के रूप में पूछा गया (https://stackoverflow.com/questions/34042429/roughly-how-fast-is-json-jsonb-column-conversion-in-postgres-9-4)। – gregoltsov
में रेल कंसोल: 'ActiveRecord :: Base.connection.execute ('परिवर्तन तालिका table_with_json स्तंभ को बदलने my_json सेट डेटा प्रकार jsonb का उपयोग my_json :: jsonb')' – Bengala