C# का उपयोग करके CosmosDB में क्वेरी SQL API:

मेरी आवश्यकता CosmosDB (SQL API) से jsonData को क्वेरी करना है। नीचे दिया गया कोड वह काम कर रहा है लेकिन डेटा को निष्पादित करने और वापस करने में 5-6 सेकंड का समय लग रहा है।

            using (var cosmosClient = new CosmosClient(cosmosAccountEndpoint))
            {
                
                var sqlQueryText = "SELECT * FROM c where c.id = //our id";

                QueryDefinition queryDefinition = new QueryDefinition(sqlQueryText);

                FeedIterator<dynamic> queryResultSetIterator = cosmosClient.GetDatabase(databaseName).GetContainer(containerName).GetItemQueryIterator<dynamic>(queryDefinition);
                
                FeedResponse<dynamic> currentResultSet = await queryResultSetIterator.ReadNextAsync(); //this Line itself is taking 4-5 seconds time

                result = currentResultSet.Resource.ToList().FirstOrDefault(); //this line taking out the required response.
            }
            
            
            

एक विकल्प के रूप में, मैं नीचे की कोशिश कर रहा हूं (यह काम नहीं कर रहा है)। नीचे दिए गए कोड में, CollectionUri ठीक से लोड नहीं हो रहा है और System.InvalidOperationException को फेंक रहा है।

                using (var client = new DocumentClient("uri", "key", new ConnectionPolicy { ConnectionMode = Microsoft.Azure.Documents.Client.ConnectionMode.Gateway, ConnectionProtocol = Protocol.Tcp, RetryOptions = retryOptions }))
                {
                    var sqlQueryText = "SELECT * FROM c where c.id = //our id";
                    Uri collectionUri = Microsoft.Azure.Documents.Client.UriFactory.CreateDocumentCollectionUri(databaseName, containerName);
                    CustomersInfo = client.CreateDocumentQuery<dynamic>(collectionUri, new SqlQuerySpec() {QueryText = sqlQueryText,Parameters = new SqlParameterCollection() { } }, DefaultOptions).AsDocumentQuery();
                };
                
                

क्या पहले कोड का कोई विकल्प है या काम करने के लिए दूसरे कोड में कोई बदलाव किया जाना है ......

अग्रिम में धन्यवाद....

1
Sathya 8 अक्टूबर 2020, 14:53

1 उत्तर

सबसे बढ़िया उत्तर

क्या आप किसी एक आइटम के लिए पूछताछ कर रहे हैं?

इसके इतने धीमे होने का कारण यह है कि यह एक क्रॉस पार्टीशन क्वेरी है।

इसे पॉइंट रीड के रूप में दोबारा लिखें, यानी ReadItemAsync() और विभाजन कुंजी मान में पास करें और यह बहुत तेज़ी से निष्पादित होगा।

साथ ही, यदि यह एक नया एप्लिकेशन है तो मैं v2 SDK के बजाय v3 .NET SDK का उपयोग करने की अनुशंसा करता हूं। यह बहुत पुराना है और इसमें कोई नया संवर्द्धन नहीं हो रहा है।

0
Mark Brown 8 अक्टूबर 2020, 17:50