إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
ابدأ مع Azure Cosmos DB لمكتبة عميل Apache Cassandra ل Go لتخزين البيانات غير المنظمة وإدارتها والاستعلام عنها. اتبع الخطوات الواردة في هذا الدليل لإنشاء حساب جديد، وتثبيت مكتبة عميل Go، والاتصال بالحساب، وتنفيذ العمليات الشائعة، والاستعلام عن بيانات العينة النهائية.
الوثائق | التعليمات البرمجية | المصدر للمكتبةالحزمة (Go)
Prerequisites
اشتراك Azure
- في حال لم يكن لديك اشتراك Azure، فأنشئ حساباً مجانيّاً قبل البدء.
أحدث إصدار من Azure CLI في Azure Cloud Shell.
- إذا كنت تفضل تشغيل أوامر مرجع CLI محليا، فقم بتسجيل الدخول إلى Azure CLI باستخدام
az loginالأمر .
- إذا كنت تفضل تشغيل أوامر مرجع CLI محليا، فقم بتسجيل الدخول إلى Azure CLI باستخدام
-
Go1.24 أو أحدث
الإعداد
أولا، إعداد الحساب وبيئة التطوير لهذا الدليل. يرشدك هذا القسم خلال عملية إنشاء حساب، والحصول على بيانات الاعتماد الخاصة به، ثم إعداد بيئة التطوير الخاصة بك.
إنشاء حساب
ابدأ بإنشاء واجهة برمجة تطبيقات لحساب Apache Cassandra. بمجرد إنشاء الحساب، قم بإنشاء مساحة المفاتيح وموارد الجدول.
إذا لم يكن لديك بالفعل مجموعة موارد مستهدفة
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"
الحصول على بيانات الاعتماد
الآن، احصل على كلمة المرور لمكتبة العميل لاستخدامها لإنشاء اتصال بالحساب الذي تم إنشاؤه مؤخرا.
استخدم
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من إخراج الأوامر السابقة. قيمة هذه الخاصية هي كلمة المرور التي تستخدمها لاحقا في هذا الدليل للاتصال بالحساب باستخدام المكتبة.
إعداد بيئة التطوير
ثم قم بتكوين بيئة التطوير الخاصة بك مع مشروع جديد ومكتبة العميل. هذه الخطوة هي آخر شرط أساسي مطلوب قبل الانتقال إلى بقية هذا الدليل.
ابدأ في دليل فارغ.
إنشاء وحدة نمطية Go جديدة.
go mod init quickstartاستيراد الحزمة
github.com/apache/cassandra-gocql-driver/v2من Go.go get github.com/apache/cassandra-gocql-driver/v2قم بإنشاء ملف main.go .
أضف Go application boilerplate.
package main func main() { }Important
تفترض الخطوات المتبقية في هذا الدليل أنك تضيف التعليمات البرمجية الخاصة بك داخل الدالة
main.
نموذج الكائن
| Description | |
|---|---|
Cluster |
يمثل اتصالا محددا بمجموعة |
Session |
الكيانات التي تحتفظ باتصال معين بمجموعة |
أمثلة على التعليمات البرمجية
مصادقة العميل
ابدأ بمصادقة العميل باستخدام بيانات الاعتماد التي تم جمعها مسبقا في هذا الدليل.
افتح ملف main.go في بيئة التطوير المتكاملة (IDE).
ضمن الدالة
main، قم باستيراد الحزم التالية مع الحزمةgithub.com/apache/cassandra-gocql-driver/v2:contextcrypto/tls
import ( "context" "crypto/tls" "github.com/apache/cassandra-gocql-driver/v2" )إنشاء متغيرات سلسلة لبيانات الاعتماد التي تم جمعها مسبقا في هذا الدليل. قم بتسمية المتغيرات
usernameوpasswordو.contactPointusername := "<username>" password := "<password>" contactPoint := "<contact-point>"تكوين مثيل من
PasswordAuthenticatorالنوع مع بيانات الاعتماد المحددة في الخطوات السابقة. قم بتخزين النتيجة في متغير يسمىauthentication.authentication := gocql.PasswordAuthenticator{ Username: username, Password: password, }تكوين مثيل
SslOptionsمع الحد الأدنى من إصدار أمان طبقة النقل (TLS) 1.2 والمتغيرcontactPointكاسم الخادم الهدف. قم بتخزين النتيجة في متغير يسمىsslOptions.sslOptions := &gocql.SslOptions{ Config: &tls.Config{ MinVersion: tls.VersionTLS12, ServerName: contactPoint, }, }إنشاء مواصفات نظام مجموعة جديدة باستخدام
NewClusterوالمتغيرcontactPoint.cluster := gocql.NewCluster(contactPoint)تكوين كائن مواصفات نظام المجموعة باستخدام بيانات الاعتماد ومتغيرات التكوين التي تم إنشاؤها في الخطوات السابقة.
cluster.SslOpts = sslOptions cluster.Authenticator = authenticationقم بتكوين باقي كائن مواصفات نظام المجموعة بهذه القيم الثابتة.
cluster.Keyspace = "cosmicworks" cluster.Port = 10350 cluster.ProtoVersion = 4إنشاء جلسة عمل جديدة تتصل بالمجموعة باستخدام
CreateSession.session, _ := cluster.CreateSession()تكوين جلسة العمل لاستدعاء الدالة
Closeبعد إرجاع الدالةmain.defer session.Close()إنشاء كائن سياق جديد
Backgroundوتخزينه فيctxالمتغير.ctx := context.Background()
Warning
تم تعطيل التحقق الكامل من أمان طبقة النقل (TLS) في هذا الدليل لتبسيط المصادقة. بالنسبة إلى عمليات نشر الإنتاج، قم بتمكين التحقق من الصحة بالكامل.
بيانات Upsert
بعد ذلك، قم بزيادة البيانات الجديدة في جدول. يضمن Upserting إنشاء البيانات أو استبدالها بشكل مناسب اعتمادا على ما إذا كانت نفس البيانات موجودة بالفعل في الجدول.
تعريف نوع جديد باسم
Productمع حقول مطابقة للجدول الذي تم إنشاؤه مسبقا في هذا الدليل.type Product struct { id string name string category string quantity int clearance bool }Tip
في Go، يمكنك إنشاء هذا النوع في ملف آخر أو إنشائه في نهاية الملف الموجود.
إنشاء كائن جديد من النوع
Product. تخزين الكائن في متغير يسمىproduct.product := Product { id: "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb", name: "Yamba Surfboard", category: "gear-surf-surfboards", quantity: 12, clearance: false, }إنشاء متغير سلسلة جديد باسم
insertQueryباستخدام استعلام لغة استعلام Cassandra (CQL) لإدراج صف جديد.insertQuery := ` INSERT INTO product (id, name, category, quantity, clearance) VALUES (?, ?, ?, ?, ?) `Queryاستخدم الدالتين وExecContextلتشغيل الاستعلام. تمرير خصائص مختلفة للمتغيرproductكمعلمات استعلام._ = session.Query( insertQuery, product.id, product.name, product.category, product.quantity, product.clearance, ).ExecContext(ctx)
قراءة البيانات
بعد ذلك، اقرأ البيانات التي تم إدراجها مسبقا في الجدول.
إنشاء متغير سلسلة جديد باسم
readQueryمع استعلام CQL يطابق العناصر مع نفسidالحقل.readQuery := ` SELECT id, name, category, quantity, clearance FROM product WHERE id = ? LIMIT 1 `إنشاء متغير سلسلة باسم
idبنفس قيمة المنتج الذي تم إنشاؤه مسبقا في هذا الدليل.id := "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb"أنشئ متغيرا آخر باسم
matchedProductلتخزين نتيجة هذه العملية فيه.var matchedProduct ProductQueryConsistencyIterContextاستخدم الدالات و وScanمعا للعثور على العنصر الفردي الذي يطابق الاستعلام وتعيين خصائصه إلىmatchedProductالمتغير.session.Query( readQuery, &id, ).Consistency(gocql.One).IterContext(ctx).Scan( &matchedProduct.id, &matchedProduct.name, &matchedProduct.category, &matchedProduct.quantity, &matchedProduct.clearance, )
بيانات الاستعلام
وأخيرا، استخدم استعلاما للعثور على كافة البيانات التي تطابق عامل تصفية معينا في الجدول.
إنشاء متغيرات السلسلة المسماة
findQueryوcategoryمع استعلام CQL والمعلمة المطلوبة.findQuery := ` SELECT id, name, category, quantity, clearance FROM product WHERE category = ? ALLOW FILTERING ` category := "gear-surf-surfboards"QueryConsistencyاستخدم الدالات وIterContextوScannerمعا لإنشاء ماسح ضوئي يمكنه التكرار عبر عناصر متعددة تطابق الاستعلام.queriedProducts := session.Query( findQuery, &category, ).Consistency(gocql.All).IterContext(ctx).Scanner()Nextاستخدم الدالتين وScanللتكرار عبر نتائج الاستعلام وتعيين خصائص كل نتيجة إلى المتغير الداخليqueriedProduct.for queriedProducts.Next() { var queriedProduct Product queriedProducts.Scan( &queriedProduct.id, &queriedProduct.name, &queriedProduct.category, &queriedProduct.quantity, &queriedProduct.clearance, ) // Do something here with each result }
تشغيل التعليمات البرمجية
قم بتشغيل التطبيق الذي تم إنشاؤه حديثا باستخدام محطة طرفية في دليل التطبيق الخاص بك.
go run .
تنظيف الموارد
الآن، احصل على كلمة المرور لمكتبة العميل لاستخدامها لإنشاء اتصال بالحساب الذي تم إنشاؤه مؤخرا.
استخدم
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من إخراج الأوامر السابقة. قيمة هذه الخاصية هي كلمة المرور التي تستخدمها لاحقا في هذا الدليل للاتصال بالحساب باستخدام المكتبة.