वहाँ एक सीधा अनुवाद नहीं है। डेटास्टोर में वास्तव में अपडेट की कोई अवधारणा नहीं है; आप जो भी कर सकते हैं वह एक ही इकाई (कुंजी) पर एक नई इकाई के साथ पुरानी संस्थाओं को ओवरराइट कर रहा है। किसी इकाई को बदलने के लिए, आपको इसे डेटास्टोर से प्राप्त करना होगा, इसे स्थानीय रूप से संशोधित करना होगा, और फिर उसे वापस सहेजना होगा।
LIKE ऑपरेटर के बराबर भी नहीं है। जबकि कुछ चाल के साथ वाइल्डकार्ड प्रत्यय मिलान संभव है, यदि आप '% नमक%' से मेल खाना चाहते हैं तो आपको स्मृति में प्रत्येक इकाई को पढ़ना होगा और स्ट्रिंग तुलना स्थानीय रूप से करना होगा।
तो यह एसक्यूएल के रूप में काफी स्वच्छ या कुशल नहीं होने वाला है। यह सबसे वितरित ऑब्जेक्ट स्टोर्स के साथ एक ट्रेडऑफ है, और डेटास्टोर कोई अपवाद नहीं है।
ने कहा, the mapper library ऐसे बैच अपडेट की सुविधा के लिए उपलब्ध है। उदाहरण का पालन करें और अपने process
समारोह के लिए कुछ इस तरह का उपयोग करें:
def process(entity):
if entity.city.startswith('Salt'):
entity.city = entity.city.replace('Salt', 'Olympic')
yield op.db.Put(entity)
नक्शाकार के अलावा अन्य विकल्प हैं। सबसे महत्वपूर्ण अनुकूलन युक्ति आपके अपडेट बैच करना है; व्यक्तिगत रूप से प्रत्येक अद्यतन इकाई को वापस न सहेजें। यदि आप मैपर और उपज डालते हैं, तो यह स्वचालित रूप से संभाला जाता है।
स्रोत
2011-11-19 22:11:40
ड्रू- मैपर संदर्भ के लिए बहुत बहुत धन्यवाद- ऐसा कुछ दिखता है जिसे मैं सीखना चाहता हूं। – Yarin