ميزات Apache Cassandra المدعومة من Azure Cosmos DB ل Apache Cassandra
ينطبق على: كاساندرا
Azure Cosmos DB هي خدمة قواعد بيانات متعددة النماذج موزعة عالمياً من Microsoft. يمكنك التواصل مع Azure Cosmos DB ل Apache Cassandra من خلال برامج تشغيل عميل Cassandra مفتوحة المصدر المتوافقة مع البروتوكول السلكي للغة الاستعلام Cassandra (CQL).
باستخدام Azure Cosmos DB ل Apache Cassandra، يمكنك الاستمتاع بفوائد واجهات برمجة تطبيقات Apache Cassandra وإمكانيات المؤسسة التي يوفرها Azure Cosmos DB. تتضمن قدرات المؤسسة التوزيع العالمي، والتقسيم التلقائي، وضمانات التوفر وزمن الانتقال، والتشفير في حالة الثبات، والنسخ الاحتياطية، وأكثر من ذلك بكثير.
بروتوكول Cassandra
يتوافق Azure Cosmos DB ل Apache Cassandra مع واجهة برمجة تطبيقات Cassandra Query Language (CQL) v3.11 (متوافقة مع الإصدارات السابقة مع الإصدار 2.x). يتم سرد أوامر CQL المعتمدة والأدوات والتقييدات والاستثناءات أدناه. يجب أن يكون أي برنامج تشغيل عميل يفهم هذه البروتوكولات قادرا على الاتصال ب Azure Cosmos DB ل Apache Cassandra.
Azure Managed Instance لـ Apache Cassandra
بالنسبة لبعض العملاء، يمكن أن يكون التكيف مع واجهة برمجة التطبيقات ل Cassandra تحديا بسبب الاختلافات في السلوك و/أو التكوين، خاصة بالنسبة لهجرة الرفع والتحويل. إذا تم إدراج ميزة مهمة لتطبيقك على أنها غير مدعومة أدناه، ففكر في استخدام Azure Managed Instance ل Apache Cassandra. هذه خدمة Azure من الطرف الأول لاستضافة وصيانة مجموعات Apache Cassandra مفتوحة المصدر فقط مع توافق بنسبة 100٪.
برنامج تشغيل Cassandra
يتم دعم الإصدارات التالية من برامج تشغيل Cassandra بواسطة Azure Cosmos DB ل Apache Cassandra:
أنواع بيانات CQL
يدعم Azure Cosmos DB ل Apache Cassandra أنواع بيانات CQL التالية:
نوع | مدعوم |
---|---|
ascii |
نعم |
bigint |
نعم |
blob |
نعم |
boolean |
نعم |
counter |
نعم |
date |
نعم |
decimal |
نعم |
double |
نعم |
float |
نعم |
frozen |
نعم |
inet |
نعم |
int |
نعم |
list |
نعم |
set |
نعم |
smallint |
نعم |
text |
نعم |
time |
نعم |
timestamp |
نعم |
timeuuid |
نعم |
tinyint |
نعم |
tuple |
نعم |
uuid |
نعم |
varchar |
نعم |
varint |
نعم |
tuples |
نعم |
udts |
نعم |
map |
نعم |
ثابتة مدعومة لإعلان نوع البيانات.
دوال CQL
يدعم Azure Cosmos DB ل Apache Cassandra وظائف CQL التالية:
الأمر | مدعوم |
---|---|
Token * |
نعم |
ttl *** |
نعم |
writetime *** |
نعم |
cast ** |
نعم |
إشعار
* تدعم واجهة برمجة التطبيقات ل Cassandra الرمز المميز كإسقاط/محدد، وتسمح فقط بالرمز المميز (pk) على الجانب الأيسر من عبارة where. على سبيل المثال، WHERE token(pk) > 1024
مدعوم، ولكن WHERE token(pk) > token(100)
غير مدعوم.
** الدالة cast()
غير قابلة للتداخل في واجهة برمجة التطبيقات ل Cassandra. على سبيل المثال، SELECT cast(count as double) FROM myTable
مدعوم، ولكن SELECT avg(cast(count as double)) FROM myTable
غير مدعوم.
*** تُستخدَم الطوابع الزمنية المخصصة وTTL المحددة مع الخيار USING
على مستوى صف (وليس لكل خلية).
دوال مجمعة:
الأمر | مدعوم |
---|---|
avg |
نعم |
count |
نعم |
min |
نعم |
max |
نعم |
sum |
نعم |
إشعار
تعمل الدالات التجميعية على الأعمدة العادية، ولكن التجميعات على أعمدة التجميع غير مدعومة.
دوال تحويل كائن ثنائي كبير الحجم:
الأمر | مدعوم |
---|---|
typeAsBlob(value) |
نعم |
blobAsType(value) |
نعم |
UUID ودوال timeuuid:
الأمر | مدعوم |
---|---|
dateOf() |
نعم |
now() |
نعم |
minTimeuuid() |
نعم |
unixTimestampOf() |
نعم |
toDate(timeuuid) |
نعم |
toTimestamp(timeuuid) |
نعم |
toUnixTimestamp(timeuuid) |
نعم |
toDate(timestamp) |
نعم |
toUnixTimestamp(timestamp) |
نعم |
toTimestamp(date) |
نعم |
toUnixTimestamp(date) |
نعم |
أوامر CQL
يدعم Azure Cosmos DB أوامر قاعدة البيانات التالية على واجهة برمجة التطبيقات لحسابات Cassandra.
الأمر | مدعوم |
---|---|
ALLOW FILTERING |
نعم |
ALTER KEYSPACE |
لا يوجد (خدمة PaaS، النسخ المتماثل المدار داخليًا) |
ALTER MATERIALIZED VIEW |
نعم |
ALTER ROLE |
لا |
ALTER TABLE |
نعم |
ALTER TYPE |
لا |
ALTER USER |
لا |
BATCH |
نعم (الدفعة غير المسجلة فقط) |
COMPACT STORAGE |
لا يوجد (خدمة PaaS) |
CREATE AGGREGATE |
لا |
CREATE CUSTOM INDEX (SASI) |
لا |
CREATE INDEX |
نعم (بما في ذلك الفهارس المسماة ولكن مجموعة FROZEN الكاملة غير مدعومة) |
CREATE FUNCTION |
لا |
CREATE KEYSPACE (تم تجاهل إعدادات النسخ المماثلة) |
نعم |
CREATE MATERIALIZED VIEW |
نعم |
CREATE TABLE |
نعم |
CREATE TRIGGER |
لا |
CREATE TYPE |
نعم |
CREATE ROLE |
لا |
CREATE USER (مهمل في Apache Cassandra الأصلي) |
لا |
DELETE |
نعم |
DISTINCT |
لا |
DROP AGGREGATE |
لا |
DROP FUNCTION |
لا |
DROP INDEX |
نعم |
DROP KEYSPACE |
نعم |
DROP MATERIALIZED VIEW |
نعم |
DROP ROLE |
لا |
DROP TABLE |
نعم |
DROP TRIGGER |
لا |
DROP TYPE |
نعم |
DROP USER (مهمل في Apache Cassandra الأصلي) |
لا |
GRANT |
لا |
INSERT |
نعم |
LIST PERMISSIONS |
لا |
LIST ROLES |
لا |
LIST USERS (مهمل في Apache Cassandra الأصلي) |
لا |
REVOKE |
لا |
SELECT |
نعم |
UPDATE |
نعم |
TRUNCATE |
نعم |
USE |
نعم |
معاملات خفيفة الوزن (LWT)
المكون | مدعوم |
---|---|
DELETE IF EXISTS |
نعم |
DELETE conditions |
نعم |
INSERT IF NOT EXISTS |
نعم |
UPDATE IF EXISTS |
نعم |
UPDATE IF NOT EXISTS |
نعم |
UPDATE conditions |
نعم |
إشعار
المعاملات خفيفة الوزن حاليًا لا تدعم الحسابات التي تم تمكين عمليات الكتابة متعددة المناطق بها.
أوامر CQL Shell
يدعم Azure Cosmos DB أوامر قاعدة البيانات التالية على واجهة برمجة التطبيقات لحسابات Cassandra.
الأمر | مدعوم |
---|---|
CAPTURE |
نعم |
CLEAR |
نعم |
CONSISTENCY * |
غير متوفر |
COPY |
لا |
DESCRIBE |
نعم |
cqlshExpand |
لا |
EXIT |
نعم |
LOGIN |
N/A (دالة USER CQL غير مدعومة، وبالتالي LOGIN فهي زائدة عن الحاجة) |
PAGING |
نعم |
SERIAL CONSISTENCY * |
غير متوفر |
SHOW |
نعم |
SOURCE |
نعم |
TRACING |
N/A (يتم دعم واجهة برمجة التطبيقات ل Cassandra بواسطة Azure Cosmos DB - استخدم التسجيل التشخيصي لاستكشاف الأخطاء وإصلاحها) |
إشعار
يعمل التناسق بشكل مختلف في Azure Cosmos DB، راجع هنا لمزيد من المعلومات.
دعم JSON
الأمر | مدعوم |
---|---|
SELECT JSON |
نعم |
INSERT JSON |
نعم |
fromJson() |
لا |
toJson() |
لا |
واجهة برمجة التطبيقات لحدود Cassandra
لا يحتوي Azure Cosmos DB ل Apache Cassandra على أي حدود لحجم البيانات المخزنة في جدول. يمكن تخزين مئات التيرابايت أو البيتابايت من البيانات مع ضمان احترام حدود مفتاح القسم. وبالمثل، ليس لدى كل كيان أو صف مكافئ أي حدود لعدد الأعمدة. غير أنه، يجب ألا يتجاوز الحجم الإجمالي للكيان 2 ميجابت. لا يمكن أن تتجاوز البيانات لكل مفتاح قسم 20 جيجابت كما هو الحال في كافة واجهات برمجة التطبيقات الأخرى.
الأدوات
Azure Cosmos DB ل Apache Cassandra هو نظام أساسي للخدمة المدارة. لا يتطلب النظام الأساسي أي حمل أو أدوات مساعدة للإدارة مثل جامع المهملات وجهاز Java الظاهري (JVM) وnodetool لإدارة نظام المجموعة. أدوات مثل cqlsh التي تستخدم توافق CQLv4 الثنائي معتمدة.
- مستكشف البيانات في مدخل Azure، والمقاييس، وتشخيص السجلات، وPowerShell، وCLI عبارة عن آليات أخرى مدعومة لإدارة الحساب.
CQL shell
يمكنك الاتصال بواجهة برمجة التطبيقات ل Cassandra في Azure Cosmos DB باستخدام CQLSH المثبت على جهاز محلي. يأتي مع Apache Cassandra 3.11 ويعمل بالخارج عن طريق تعيين متغيرات البيئة. تتضمن الأقسام التالية إرشادات تثبيت واجهة برمجة التطبيقات وتكوينها والاتصال بها ل Cassandra في Azure Cosmos DB، على Windows أو Linux باستخدام CQLSH.
تحذير
لن تعمل الاتصال إلى Azure Cosmos DB ل Apache Cassandra مع إصدارات DataStax Enterprise (DSE) أو Cassandra 4.0 من CQLSH. يرجى التأكد من استخدام الإصدار 3.11 فقط مصدر مفتوح إصدارات Apache Cassandra من CQLSH عند الاتصال بواجهة برمجة التطبيقات ل Cassandra.
Windows:
- تثبيت Python 3
- تثبيت PIP
- قبل تثبيت PIP، قم بتنزيل ملف get-pip.py.
- شغل موجه الأوامر إذا لم يكن مفتوحًا بالفعل. للقيام بذلك، افتح شريط البحث في Windows واكتب cmd وحدد الأيقونة.
- ثم قم بتشغيل الأمر التالي لتنزيل ملف get-pip.py:
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
- تثبيت PIP على Windows
python get-pip.py
- تحقق من تثبيت PIP (ابحث عن رسالة من الخطوة 3 لتأكيد المجلد الذي تم تثبيت PIP فيه ثم انتقل إلى هذا المجلد وقم بتشغيل تعليمات pip للأوامر).
- تثبيت CQLSH باستخدام PIP
pip3 install cqlsh==5.0.3
- تثبيت Python 2
- شغل CQLSH باستخدام أسلوب المصادقة.
إشعار
ستحتاج إلى تعيين متغيرات البيئة للإشارة إلى مجلد Python 2.
تثبيت على Unix/Linux/Mac:
# Install default-jre and default-jdk
sudo apt install default-jre
sudo apt-get update
sudo apt install default-jdk
# Import the Baltimore CyberTrust root certificate:
curl https://cacert.omniroot.com/bc2025.crt > bc2025.crt
keytool -importcert -alias bc2025ca -file bc2025.crt
# Install the Cassandra libraries in order to get CQLSH:
echo "deb https://downloads.apache.org/cassandra/debian 311x main" | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list
curl https://downloads.apache.org/cassandra/KEYS | sudo apt-key add -
sudo apt-get update
sudo apt-get install cassandra=3.11.13
الاتصال بـ Unix/Linux/Mac:
# Export the SSL variables:
export SSL_VERSION=TLSv1_2
export SSL_VALIDATE=false
# Connect to Azure Cosmos DB for Apache Cassandra:
cqlsh <YOUR_ACCOUNT_NAME>.cassandra.cosmosdb.azure.com 10350 -u <YOUR_ACCOUNT_NAME> -p <YOUR_ACCOUNT_PASSWORD> --ssl --protocol-version=4
الاتصال بـ Docker:
docker run -it --rm -e SSL_VALIDATE=false -e SSL_VERSION=TLSv1_2 cassandra:3.11 cqlsh <account_name>.cassandra.cosmos.azure.com 10350 -u <YOUR_ACCOUNT_NAME> -p <YOUR_ACCOUNT_PASSWORD> --ssl
ستؤدي كافة عمليات CRUD التي يتم تنفيذها من خلال SDK متوافق مع CQL v4 إلى الحصول على معلومات إضافية حول الخطأ وطلب وحدات مستهلكة. يجب معالجة أوامر الحذف والتحديث مع مراعاة إدارة الموارد لضمان الاستخدام الفعال فيما يتعلق بمعدل النقل المقدم.
- ملاحظة: يجب أن تكون قيمة gc_grace_seconds صفراً في حالة تحديدها.
var tableInsertStatement = table.Insert(sampleEntity);
var insertResult = await tableInsertStatement.ExecuteAsync();
foreach (string key in insertResult.Info.IncomingPayload)
{
byte[] valueInBytes = customPayload[key];
double value = Encoding.UTF8.GetString(valueInBytes);
Console.WriteLine($"CustomPayload: {key}: {value}");
}
تعيين التناسق
يوفر Azure Cosmos DB ل Apache Cassandra اختيار التناسق لعمليات القراءة. يتم تفصيل تعيين التناسق هنا.
الإذن وإدارة الدور
يدعم Azure Cosmos DB التحكم في الوصول المستند إلى دور Azure (Azure RBAC) لتوفير المفاتيح وتدويرها وعرض المقاييس وكلمات المرور/المفاتيح للقراءة والكتابة والقراءة فقط التي يمكن الحصول عليها من خلال مدخل Microsoft Azure. لا يدعم Azure Cosmos DB الأدوار لأنشطة CRUD.
خيارات مساحة المفاتيح والجدول
يتم تجاهل الخيارات الخاصة باسم المنطقة والفئة وreplication_factor ومركز البيانات في الأمر "إنشاء مساحة مفاتيح" حاليًا. يستخدم النظام أسلوب النسخ المتماثل للتوزيع العمومي ل Azure Cosmos DB الأساسي لإضافة المناطق. إذا كنت بحاجة إلى وجود البيانات عبر المناطق، يمكنك تمكينها على مستوى الحساب باستخدام PowerShell أو CLI أو المدخل، لمعرفة المزيد، راجع مقالة كيفية إضافة المناطق . لا يمكن تعطيل Durable_writes لأن Azure Cosmos DB يضمن أن تكون كل كتابة دائمة. في كل منطقة، يقوم Azure Cosmos DB بنسخ البيانات عبر مجموعة النسخ المتماثلة التي تتكون من أربع نسخ متماثلة ولا يمكن تعديل تكوين مجموعة النسخ المتماثلة هذا.
يتم تجاهل كافة الخيارات عند إنشاء الجدول، باستثناء gc_grace_seconds، والتي يجب تعيينها إلى الصفر. تحمل مساحة المفاتيح وجدول خيار إضافي يُسمى "cosmosdb_provisioned_throughput" مع قيمة الحد الأدنى من 400 RU/s. يسمح معدل نقل مساحة المفاتيح مشاركة الإنتاجية عبر جداول متعددة وهو مفيد للسيناريوهات عندما لا تستخدم كافة الجداول الإنتاجية المقدمة. يتيح الأمر «تعديل الجدول» تغيير معدل النقل المقدم عبر المناطق.
CREATE KEYSPACE sampleks WITH REPLICATION = { 'class' : 'SimpleStrategy'} AND cosmosdb_provisioned_throughput=2000;
CREATE TABLE sampleks.t1(user_id int PRIMARY KEY, lastname text) WITH cosmosdb_provisioned_throughput=2000;
ALTER TABLE gks1.t1 WITH cosmosdb_provisioned_throughput=10000 ;
الفهرس الثانوي
تدعم واجهة برمجة التطبيقات ل Cassandra الفهارس الثانوية على جميع أنواع البيانات باستثناء أنواع المجموعات المجمدة والأرقام العشرية وأنواع المتغيرات.
استخدام نهج اتصال إعادة محاولة Cassandra
Azure Cosmos DB هو نظام الموارد التي تحكمها. يمكنك إجراء عدد معين من العمليات في ثانية معينة استناداً إلى وحدات الطلب التي تستهلكها العمليات. في حالة تجاوز أحد التطبيقات هذا الحد في ثانية معينة، تُفرَض حدود على معدل الطلبات ويمكن تقديم استثناءات. تترجم واجهة برمجة تطبيقات Cassandra في Azure Cosmos DB هذه الاستثناءات إلى أخطاء محملة بشكل زائد على بروتوكول Cassandra الأصلي. للتأكد من أن التطبيق الخاص بك يمكنه اعتراض الطلبات وإعادة محاولة تنفيذها في حالة تقييد المعدل، يتم توفير spark وملحقات Java . راجع أيضا نماذج التعليمات البرمجية ل Java للإصدار 3 والإصدار 4 من برامج تشغيل Datastax، عند الاتصال بواجهة برمجة التطبيقات ل Cassandra في Azure Cosmos DB. إذا كنت تستخدم SDKs أخرى للوصول إلى واجهة برمجة التطبيقات ل Cassandra في Azure Cosmos DB، فبادر بإنشاء نهج إعادة المحاولة لإعادة المحاولة على هذه الاستثناءات. بدلا من ذلك، قم بتمكين عمليات إعادة المحاولة من جانب الخادم لواجهة برمجة التطبيقات ل Cassandra.
الخطوات التالية
- ابدأ بإنشاء واجهة برمجة تطبيقات لحساب Cassandra وقاعدة بيانات وجدول باستخدام تطبيق Java