पर अनुक्रमिक संख्याएं उत्पन्न करने का कुशल तरीका यह मानते हुए कि SQL Azure Federations पहचान गुण या SEQUENCEs का समर्थन नहीं करता है, रिकॉर्ड डालने पर अनुक्रमिक संख्याएं उत्पन्न करने का एक प्रभावी तरीका क्या होगा?SQL Azure Federations
उदाहरण के लिए, इन स्तंभों साथ एक मेज दिया:
CREATE TABLE [dbo].[Orders] (
[TenantId] [uniqueidentifier] NOT NULL,
[OrderId] [uniqueidentifier] NOT NULL,
[OrderNumber] [int] NOT NULL
CONSTRAINT [PK_Orders] PRIMARY KEY CLUSTERED (
[TenantId] ASC,
[OrderId] ASC
)
) FEDERATED ON ([FederationKey] = [TenantId])
एक दिया किरायेदार के लिए डाला प्रत्येक आदेश के लिए, OrderID वृद्धि की जानी चाहिए। उदाहरण के लिए, टेंटेंट ए ऑर्डर आईडी के लिए 1, 2, 3 होगा ... और किरायेदार बी ऑर्डर आईडी के लिए एक स्वतंत्र अनुक्रम में 1, 2, 3 ... भी होगा। आदर्श रूप से कोई अंतराल नहीं होना चाहिए।
किरायेदार आईडी और ऑर्डर आईडी प्राथमिक कुंजी के घटक हैं। उनके मूल्य आवेदन द्वारा निर्धारित किए जाते हैं और वे अनुक्रम उत्पन्न करने के मुद्दे से संबंधित नहीं हैं; केवल ऑर्डर आईडी में व्यावसायिक अर्थ के साथ अनुक्रमिक संख्या है। इसके अलावा, TenantId संघ की वितरण कुंजी है।
This MSDN Blog article विकल्प 1 में अनुक्रमों को धारण करने वाली तालिका रखने और अनुक्रमों को बढ़ाने के लिए एक पृथक लेनदेन में संग्रहीत प्रक्रिया का उपयोग करने का एक दृष्टिकोण है। प्रत्येक किरायेदार के पास अनुक्रम के अंतिम उपयोग मूल्य वाले इस तालिका पर एक रिकॉर्ड होगा।
क्या यह स्केलेबिलिटी, विवाद, संसाधन लॉकिंग पर विचार करने वाला इष्टतम दृष्टिकोण होगा? एसक्यूएल एज़ूर फेडरेशन की सीमाओं पर विचार करते हुए कोई अन्य उपयोगी चाल?
महान जवाब है, (एक अलग कनेक्शन का उपयोग कर रिकॉर्ड अपडेट करने के लिए संग्रहीत प्रक्रिया का उपयोग करके), आपका पहला विकल्प कुछ जटिलता की लागत पर बड़ी स्केलेबिलिटी और थ्रूपुट प्रदान करता है; दूसरा विकल्प काफी सरल है और प्रक्रिया सुव्यवस्थित होने पर पर्याप्त हो सकती है (उदाहरण के लिए एक संदेश कतार का उपयोग करना) या जब प्रत्येक किरायेदार के लिए नए आदेश निर्माण की दर बहुत अधिक नहीं होती है। –