के लिए लॉजिकल डिलीट का समर्थन करना मैं बाद में पूर्ववत करने के लिए समाचार-फ़ीड रिकॉर्ड के लिए लॉजिकल डिलीट को कार्यान्वित करना चाहता हूं।
सिस्टम उत्पादन में है, इसलिए किसी भी समाधान को मौजूदा डेटा का समर्थन करना चाहिए।
फ़ीड में रिकॉर्ड डालना बेवकूफ है, इस प्रकार पहले से ही हटाए गए रिकॉर्ड को सम्मिलित करना (एक ही प्राथमिक कुंजी है) इसे अनावृत नहीं करना चाहिए।
किसी भी समाधान को मौजूदा या हटाए गए रिकॉर्ड्स का एक पृष्ठ पुनर्प्राप्त करने के लिए प्रश्नों का समर्थन करना चाहिए।मौजूदा फ़ीड तालिका
फ़ीड तालिका:
CREATE TABLE my_feed (
tenant_id int,
item_id int,
created_at timestamp,
feed_data text,
PRIMARY KEY (tenant_id, created_at, feed_id))
WITH compression = { 'sstable_compression' : 'LZ4Compressor' }
AND CLUSTERING ORDER BY (created_at DESC);
दो दृष्टिकोण मैं के बारे में सोचा है, लेकिन दोनों गंभीर नुकसान कर रहे हैं: एक अलग मेज पर
1. ले जाएँ हटाए गए रिकॉर्ड। प्रश्न छोटे हैं और कोई माइग्रेशन की आवश्यकता नहीं है, लेकिन बेवकूफ आवेषण मुश्किल लगते हैं (केवल सम्मिलित करने से पहले पढ़ा जाता है?)।
2. is_deleted कॉलम जोड़ें। प्रश्नों का समर्थन करने के लिए उस कॉलम के लिए द्वितीयक अनुक्रमणिका बनाएं। बेवकूफ आवेषण का समर्थन करना आसान लगता है (हल्के लेनदेन या एक अद्यतन चाल)। मुख्य नुकसान यह है कि पुराने रिकॉर्ड में शून्य मान होता है, इस प्रकार इसे डेटा माइग्रेशन की आवश्यकता होती है।
क्या कोई तीसरा और सुरुचिपूर्ण दृष्टिकोण है? क्या आप उपर्युक्त सुझावों में से एक का समर्थन करते हैं?
मुझे पहले से ही हटाए गए रिकॉर्ड्स के खिलाफ जीवन में लाया जा रहा है, क्योंकि सिस्टम को डिज़ाइन किया गया है कि एक रिकॉर्ड को एक से अधिक बार भेजा जा सकता है (रीट्रीज़, माइग्रेशन, सेल्फ हीलिंग प्रोसेस)। उन मामलों में यह उम्मीद की जाती है कि एक बार रिकॉर्ड डालने के बाद, इसे बदला नहीं जाएगा, जब तक कोई उपयोगकर्ता इसे हटा देता है। –
'is_deleted' के बारे में: विभाजन कुंजी (tenant_id) को हमेशा क्वेरी में निर्दिष्ट किया जाता है, द्वितीयक सूचकांक कम कार्डिनालिटी फ़ील्ड के लिए भी कुशल होना चाहिए: [http://stackoverflow.com/q/26439396/3950710] –