6

पर एक लचीला स्केल बहु ठीकरा क्वेरी निष्पादित मैं एक परियोजना मैं इस समय पर काम कर रहा हूँ में नए लचीला स्केल technnology को लागू करने व्यस्त हूँ। यह तकनीक नई एप्लिकेशन नींव को डिजाइन करते समय हमारे कुछ जटिल मुद्दों को हल करने के लिए प्रतीत होती है।डेटाबेस संदर्भ

अब तक, उदाहरण बहुत अच्छी लग रही है और मैं हमारे नव निर्मित दाल में इस लागू करने व्यस्त हूँ।

हमारे आवेदन हम Azure में लचीला स्केल पर पूरी तरह भरोसा नहीं कर सकते के लिए

। आवेदन को एक ही इंस्टेंस मशीन, ऑन-प्रिमाइज़ पर भी चलाने में सक्षम होना चाहिए। इसलिए मैंने डेटाबेस को क्वेरी करने के लिए निम्न कोड बनाया है जो लोचदार स्केल के साथ भी काफी अच्छी तरह से काम करता है।

public IEnumerable<AnEntity> All() 
{ 
    var dbConnection = GetConnection(); 
    using (var context = new OurDatabaseContext(dbConnection)) 
    { 
     var theEntities = context.EntityTable; 
     return theEntities.ToArray(); 
    } 
} 
private IDbConnection GetConnection() 
{ 
    var connectionInstance = connection[ConnectionStringNames.TheDatabase]; 
    var dbConnection = connectionInstance.Create(); 
    return dbConnection; 
} 

connectionInstance आईओसी जो एक IDbConnection जो हम OurDatabaseContext में उपयोग कर सकते हैं के माध्यम से किया गया है। सब बहुत ज्यादा सीधा।

मुख्य मुद्दा मैं का सामना करना पड़ रहा हूँ एक MultiShardConnection कर रहा है, लचीला स्केल द्वारा प्रदान की और उदाहरण में लागू।

तो मेरा सवाल यह है कि डेटाबेस संदर्भ के साथ MultiShardConnection का उपयोग करना संभव है (LINQ2SQL (जिसे हम उपयोग कर रहे हैं) या ईएफ के साथ)।

यदि नहीं, तो MultiShardCommand के साथ संयोजन में MultiShardConnection का उपयोग करने का एकमात्र समाधान है? या ऐसी सुविधा कब उपलब्ध होगी?

+0

आप डीबीकॉन्टेक्स्ट में मल्टीशर्डकनेक्शन का उपयोग करने का प्रयास क्यों कर रहे हैं? क्या आपने इस आलेख में वर्णित दृष्टिकोण का प्रयास किया - http://azure.microsoft.com/en-us/documentation/articles/sql-database-elastic-scale-use-entity-framework-applications-visual-studio/ –

उत्तर

1

जैसा कि मुझे वर्तमान में पता है कि डीबीकॉन्टेक्स्ट के साथ मल्टीशर्ड कनेक्शन बनाने का कोई छोटा रास्ता नहीं है।

MultiShardConnection + MultiShardCommand का उपयोग उदाहरण से बहुत straitforward है। हालांकि सभी विधियां उपलब्ध नहीं हैं (उदाहरण के लिए ReadAsync)।

लेकिन, मुझे लगता है कि अधिकांश मल्टीशर्ड कनेक्शन सही शार्डिंग कुंजी (मैपिंग कुंजी) का उपयोग कर बाईपास किए जा सकते हैं। मैंने अपने ShardMapManager के लिए एक और sharding कुंजी जोड़कर मेरी समस्या हल की। यदि आप अपने विशिष्ट कारण का वर्णन करना चाहते हैं तो आपको मल्टीशर्ड कनेक्शन की आवश्यकता है और बीमार मेरी पोस्ट संपादित करें। कई डीबी कॉन्टैक्स बनाने का विकल्प हमेशा होता है।

संबंधित मुद्दे