مقدمة
Apache Cassandra هي قاعدة بيانات NoSQL عالية الأداء وقابلة للتوسع وتتحمل الأعطال، مصممة لمعالجة كميات هائلة من البيانات بأقل تأخير. تستخدمها شركات مثل Netflix وApple وeBay وInstagram لمعالجة البيتابايتات من البيانات في الوقت الفعلي.
لغة Python لديها برنامج تشغيل رسمي يُسمى cassandra-driver، يوفر وصولاً كاملاً لإمكانيات Cassandra عبر برامج Python. يدعم الاستعلامات المتزامنة وغير المتزامنة، والعبارات المُعدة، والتعامل مع UUID وTTL وغير ذلك الكثير.
ما هو cassandra-driver
Cassandra-driver هو عميل Python الرسمي لـ Apache Cassandra، تم تطويره بواسطة فريق DataStax. إنه برنامج تشغيل عالي الأداء يضمن تكاملاً كاملاً بين تطبيقات Python ومجموعة Cassandra.
الميزات الرئيسية للبرنامج
- عمليات متزامنة وغير متزامنة
- استعلامات مُعدة لتحسين الأداء
- توجيه تلقائي للاستعلامات إلى العقد المثلى
- دعم جميع أنواع بيانات Cassandra
- معالجة مدمجة للأخطاء وإعادة المحاولة
- دعم المصادقة وتشفير SSL
- موازنة التحميل بين عقد المجموعة
التثبيت والإعداد
تثبيت البرنامج
pip install cassandra-driver
قد تحتاج إلى تبعيات إضافية لبعض الوظائف:
pip install cassandra-driver[cqlengine] # لـ ORM
pip install cassandra-driver[graph] # للعمل مع الرسوم البيانية
الاتصال بالمجموعة
from cassandra.cluster import Cluster
from cassandra.auth import PlainTextAuthProvider
# اتصال بسيط
cluster = Cluster(['127.0.0.1'])
session = cluster.connect()
# اتصال مع المصادقة
auth_provider = PlainTextAuthProvider(username='cassandra', password='cassandra')
cluster = Cluster(['127.0.0.1'], auth_provider=auth_provider)
session = cluster.connect()
# اتصال مع SSL
from cassandra.cluster import Cluster
from ssl import PROTOCOL_TLSv1_2, CERT_REQUIRED
cluster = Cluster(['127.0.0.1'],
ssl_context={
'ssl_version': PROTOCOL_TLSv1_2,
'cert_reqs': CERT_REQUIRED,
'ca_certs': '/path/to/ca.pem'
})
session = cluster.connect()
الاتصال بـ keyspace محدد
session.set_keyspace('my_keyspace')
# أو
session = cluster.connect('my_keyspace')
المفاهيم الأساسية في Cassandra
هندسة البيانات
- Keyspace — مشابه لقاعدة البيانات في SQL، يحتوي على إعدادات النسخ المتماثل
- الجدول — يحتوي على صفوف وأعمدة، لكن ببنية داخلية مختلفة
- مفتاح التقسيم (Partition key) — يحدد العقدة التي تُخزن فيها السجلات
- مفتاح التجميع (Clustering key) — يؤثر على ترتيب التخزين داخل القسم
- المفتاح الأساسي (Primary key) — يتكون من مفتاح التقسيم ومفتاح التجميع
خصائص نموذج البيانات
Cassandra لا تدعم JOIN أو التجميعات كما في SQL، لكنها تتوسع أفقيًا وتوفر توفرًا عاليًا للبيانات. يجب أن يعتمد تصميم المخطط على أنماط الوصول إلى البيانات.
إنشاء Keyspace والجداول
إنشاء Keyspace
session.execute("""
CREATE KEYSPACE IF NOT EXISTS my_keyspace
WITH replication = {
'class': 'SimpleStrategy',
'replication_factor': '3'
}
""")
# للإنتاج يُوصى باستخدام NetworkTopologyStrategy
session.execute("""
CREATE KEYSPACE IF NOT EXISTS my_keyspace
WITH replication = {