मैं स्कैला डीबी ढांचे/रैपर का शोध कर रहा था, और ट्विटर से गिजार्ड में आया था। जब मैं पहली बार प्रभावित हुआ, तो मैंने प्रतिबंध को पढ़ते समय ठंडा कर दिया। वे कहते हैं कि आपके द्वारा किए गए सभी डीबी संचालन दोनों बेवकूफ और कम्यूटेटिव होना चाहिए। अगर मैं ठीक से समझता हूं, तो यह मूल रूप से लगभग कुछ भी नहीं छोड़ा जाता है। उदाहरण के तौर पर, यदि मेरे पास एक पूर्णांक काउंटर वाला एक इकाई है, और इसे बढ़ाया जाना है। मैं या तो "वृद्धि" ऑपरेशन, या "सेट" ऑपरेशन का उपयोग कर सकता हूं। लेकिन वृद्धि बेवकूफ नहीं होगी (यदि आप इसे दो बार चलाते हैं, तो आप एक अलग परिणाम प्राप्त करते हैं और फिर इसे एक बार चलाते हैं), और सेट कम्यूटिव नहीं होगा (पहले 5 सेट करना और फिर 2 अलग-अलग परिणाम देता है और फिर पहले दो सेट करता है और फिर 5)। तो क्या "डालने-अनुपस्थित" से अलग कुछ भी बचा है, जो अधिकांश उपयोग-मामलों के लिए बहुत उपयोगी नहीं है। एक वितरित डेटाबेस ढांचे का बिंदु क्या है जो इतनी बाध्य है कि आप मूल रूप से इसके साथ कुछ भी उपयोगी नहीं कर सकते हैं? मुझे कुछ महत्वपूर्ण याद आना चाहिए।एक ही समय में किस प्रकार के डीबी ऑपरेशंस "बेवकूफ और कम्यूटिव" दोनों हैं?
[संपादित करें] इसके अलावा "डालने-अगर-अनुपस्थित" (और "हटाएँ-अगर-वर्तमान"), मुझे लगता है कि "की तुलना-टाइमस्टैम्प और सेट" दोनों idempotent और विनिमेय हो सकता है, यदि परिवर्तन कर रहे हैं को छोड़ने के बजाय कतारबद्ध, जब "पिछले परिवर्तन" अभी भी गायब हैं। लेकिन मुझे नहीं पता कि कोई डीबी इसे लागू करता है या नहीं।
तो, आप एक स्तंभ अद्यतन कर सकते हैं, यह जांचकर कि पुराने राज्य ने मूल्य की उम्मीद की है, लेकिन आप इसे दो बार अपडेट नहीं कर सकते हैं, क्योंकि अगर अपडेट गलत क्रम में पहुंचे, तो उन्हें दोनों को त्याग दिया जाएगा। इसलिए यह केवल तभी काम करेगा जब दो अपडेट के बीच पर्याप्त समय हो, ताकि आप सुनिश्चित हो सकें कि वे सही क्रम में पहुंचते हैं। –