إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
ابدأ مع Azure Cosmos DB لمكتبة عميل Apache Cassandra ل .NET لتخزين البيانات غير المنظمة وإدارتها والاستعلام عنها. اتبع الخطوات الواردة في هذا الدليل لإنشاء حساب جديد، وتثبيت مكتبة عميل .NET، والاتصال بالحساب، وتنفيذ العمليات الشائعة، والاستعلام عن بيانات العينة النهائية.
الوثائق | التعليمات البرمجية | المصدر للمكتبةحزمة (NuGet)
Prerequisites
اشتراك Azure
- في حال لم يكن لديك اشتراك Azure، فأنشئ حساباً مجانيّاً قبل البدء.
أحدث إصدار من Azure CLI في Azure Cloud Shell.
- إذا كنت تفضل تشغيل أوامر مرجع CLI محليا، فقم بتسجيل الدخول إلى Azure CLI باستخدام
az loginالأمر .
- إذا كنت تفضل تشغيل أوامر مرجع CLI محليا، فقم بتسجيل الدخول إلى Azure CLI باستخدام
- .NET SDK 9.0 أو أحدث
الإعداد
أولا، إعداد الحساب وبيئة التطوير لهذا الدليل. يرشدك هذا القسم خلال عملية إنشاء حساب، والحصول على بيانات الاعتماد الخاصة به، ثم إعداد بيئة التطوير الخاصة بك.
إنشاء حساب
ابدأ بإنشاء واجهة برمجة تطبيقات لحساب Apache Cassandra. بمجرد إنشاء الحساب، قم بإنشاء مساحة المفاتيح وموارد الجدول.
-
Azure CLI - مدخل Microsoft Azure
إذا لم يكن لديك بالفعل مجموعة موارد مستهدفة
az group create، فاستخدم الأمر لإنشاء مجموعة موارد جديدة في اشتراكك.az group create \ --name "<resource-group-name>" \ --location "<location>"az cosmosdb createاستخدم الأمر لإنشاء Azure Cosmos DB جديد لحساب Apache Cassandra مع الإعدادات الافتراضية.az cosmosdb create \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --locations "regionName=<location>" \ --capabilities "EnableCassandra"إنشاء مساحة مفتاح جديدة باستخدام
az cosmosdb cassandra keyspace createالمسمىcosmicworks.az cosmosdb cassandra keyspace create \ --resource-group "<resource-group-name>" \ --account-name "<account-name>" \ --name "cosmicworks"إنشاء كائن JSON جديد لتمثيل المخطط الخاص بك باستخدام أمر Bash متعدد الأسطر. ثم استخدم
az cosmosdb cassandra table createالأمر لإنشاء جدول جديد باسمproducts.schemaJson=$(cat <<EOF { "columns": [ { "name": "id", "type": "text" }, { "name": "name", "type": "text" }, { "name": "category", "type": "text" }, { "name": "quantity", "type": "int" }, { "name": "price", "type": "decimal" }, { "name": "clearance", "type": "boolean" } ], "partitionKeys": [ { "name": "id" } ] } EOF )az cosmosdb cassandra table create \ --resource-group "<resource-group-name>" \ --account-name "<account-name>" \ --keyspace-name "cosmicworks" \ --name "product" \ --schema "$schemaJson"
الحصول على بيانات الاعتماد
الآن، احصل على كلمة المرور لمكتبة العميل لاستخدامها لإنشاء اتصال بالحساب الذي تم إنشاؤه مؤخرا.
-
Azure CLI - مدخل Microsoft Azure
استخدم
az cosmosdb showللحصول على نقطة الاتصال واسم المستخدم للحساب.az cosmosdb show \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --query "{username:name,contactPoint:documentEndpoint}"سجل قيمة خصائص
contactPointوusernameمن إخراج الأوامر السابقة. قيم هذه الخصائص هي نقطة الاتصالواسم المستخدم الذي تستخدمه لاحقا في هذا الدليل للاتصال بالحساب باستخدام المكتبة.استخدمه
az cosmosdb keys listللحصول على مفاتيح الحساب.az cosmosdb keys list \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --type "keys"سجل قيمة الخاصية
primaryMasterKeyمن إخراج الأوامر السابقة. قيمة هذه الخاصية هي كلمة المرور التي تستخدمها لاحقا في هذا الدليل للاتصال بالحساب باستخدام المكتبة.
إعداد بيئة التطوير
ثم قم بتكوين بيئة التطوير الخاصة بك مع مشروع جديد ومكتبة العميل. هذه الخطوة هي آخر شرط أساسي مطلوب قبل الانتقال إلى بقية هذا الدليل.
ابدأ في دليل فارغ.
إنشاء تطبيق وحدة تحكم .NET جديد
dotnet new consoleأضف الحزمة
CassandraCSharpDriverمن NuGet.dotnet add package CassandraCSharpDriverأنشئ المشروع.
dotnet build
نموذج الكائن
| Description | |
|---|---|
Cluster |
يمثل حالة الاتصال بمجموعة |
ISession |
الكيانات الآمنة لسلسلة الرسائل التي تحتفظ باتصال معين بمجموعة |
Mapper |
عميل Cassandra Query Language (CQL) المستخدم لتشغيل الاستعلامات |
أمثلة على التعليمات البرمجية
مصادقة العميل
ابدأ بمصادقة العميل باستخدام بيانات الاعتماد التي تم جمعها مسبقا في هذا الدليل.
افتح ملف Program.cs في بيئة التطوير المتكاملة (IDE).
احذف أي محتوى موجود داخل الملف.
أضف استخدام التوجيهات لمساحات الأسماء التالية:
System.Security.AuthenticationCassandraCassandra.Mapping
using System.Security.Authentication; using Cassandra; using Cassandra.Mapping;إنشاء متغيرات ثابتة للسلسلة لبيانات الاعتماد التي تم جمعها مسبقا في هذا الدليل. قم بتسمية المتغيرات
usernameوpasswordو.contactPointconst string username = "<username>"; const string password = "<password>"; const string contactPoint = "<contact-point>";أنشئ كائنا جديدا
SSLoptionsللتأكد من أنك تستخدم بروتوكول أمان طبقة النقل (TLS) 1.2، والتحقق من إبطال الشهادة، وعدم إجراء أي تحقق إضافي من صحة الشهادة من جانب العميل.SSLOptions sslOptions = new( sslProtocol: SslProtocols.Tls12, checkCertificateRevocation: true, remoteCertValidationCallback: (_, _, _, _) => true);إنشاء كائن جديد
Clusterباستخدام بناء الجملة بطلاقةCluster.Builder(). استخدم بيانات الاعتماد ومتغيرات التكوين التي تم إنشاؤها في الخطوات السابقة.Cluster cluster = Cluster.Builder() .WithCredentials(username, password) .WithPort(10350) .AddContactPoint(contactPoint) .WithSSL(sslOptions) .Build();إنشاء متغير جديد
sessionباستخدامConnectAsyncالأسلوب تمرير في اسم مساحة المفتاح الهدف (cosmicworks).using ISession session = await cluster.ConnectAsync("cosmicworks");إنشاء متغير جديد
mapperباستخدام الدالةMapperالإنشائية للفئة التي تمر في المتغير الذي تم إنشاؤهsessionمؤخرا.Mapper mapper = new(session);
Warning
تم تعطيل التحقق الكامل من أمان طبقة النقل (TLS) في هذا الدليل لتبسيط المصادقة. بالنسبة إلى عمليات نشر الإنتاج، قم بتمكين التحقق من الصحة بالكامل.
بيانات Upsert
بعد ذلك، قم بزيادة البيانات الجديدة في جدول. يضمن Upserting إنشاء البيانات أو استبدالها بشكل مناسب اعتمادا على ما إذا كانت نفس البيانات موجودة بالفعل في الجدول.
تعريف نوع سجل جديد يسمى
Productبالحقول المقابلة للجدول الذي تم إنشاؤه مسبقا في هذا الدليل.Type IdstringNamestringCategorystringQuantityintPricedecimalClearanceboolrecord Product { public required string Id { get; init; } public required string Name { get; init; } public required string Category { get; init; } public required int Quantity { get; init; } public required decimal Price { get; init; } public required bool Clearance { get; init; } }Tip
في .NET، يمكنك إنشاء هذا النوع في ملف آخر أو إنشائه في نهاية الملف الموجود.
إنشاء كائن جديد من النوع
Product. تخزين الكائن في متغير يسمىproduct.Product product = new() { Id = "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb", Name = "Yamba Surfboard", Category = "gear-surf-surfboards", Quantity = 12, Price = 850.00m, Clearance = false };استدعاء
InsertAsyncالأسلوب الذي يمر في المتغير الذيproductتم إنشاؤه في الخطوة السابقة بشكل غير متزامن.await mapper.InsertAsync(product);
قراءة البيانات
بعد ذلك، اقرأ البيانات التي تم إدراجها مسبقا في الجدول.
إنشاء متغير سلسلة جديد باسم
readQueryمع استعلام CQL يطابق العناصر مع نفسidالحقل.string readQuery = "SELECT * FROM product WHERE id = ? LIMIT 1";إنشاء متغير سلسلة باسم
idبنفس قيمة المنتج الذي تم إنشاؤه مسبقا في هذا الدليل.string id = "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb";SingleAsync<>استخدم الأسلوب العام لتشغيل الاستعلام المخزن فيreadQuery، ومررidالمتغير كوسيطة، وقم بتعيين الإخراج إلىProductالنوع. قم بتخزين نتيجة هذه العملية في متغير من النوعProduct.Product matchedProduct = await mapper.SingleAsync<Product>(readQuery, [id]);
بيانات الاستعلام
وأخيرا، استخدم استعلاما للعثور على كافة البيانات التي تطابق عامل تصفية معينا في الجدول.
إنشاء متغيرات السلسلة المسماة
findQueryوcategoryمع استعلام CQL والمعلمة المطلوبة.string findQuery = "SELECT * FROM product WHERE category = ? ALLOW FILTERING"; string category = "gear-surf-surfboards";استخدم متغيري السلسلة والأسلوب
FetchAsync<>العام للاستعلام عن نتائج متعددة بشكل غير متزامن. قم بتخزين نتيجة هذا الاستعلام في متغير من النوعIEnumerable<Product>المسمىqueriedProducts.IEnumerable<Product> queriedProducts = await mapper.FetchAsync<Product>(findQuery, [category]);استخدم تكرار حلقي
foreachللتكرار عبر نتائج الاستعلام.foreach (Product queriedProduct in queriedProducts) { // Do something here with each result }
تشغيل التعليمات البرمجية
قم بتشغيل التطبيق الذي تم إنشاؤه حديثا باستخدام محطة طرفية في دليل التطبيق الخاص بك.
dotnet run
تنظيف الموارد
عندما لا تعد بحاجة إلى الحساب، قم بإزالة الحساب من اشتراك Azure الخاص بك عن طريق حذف المورد.
-
Azure CLI - مدخل Microsoft Azure
az cosmosdb delete \
--resource-group "<resource-group-name>" \
--name "<account-name>"