قاعدة بيانات صفوف
تتميز قواعد البيانات بكثرة أنواعها وتعدد ميزاتها, وتتلخص أهم الميزات بسهولة الإستخدام, سرعة التنفيذ, و قابلية التطوير في المستقبل, و سنتحدث في هذا المقال عن قاعدة بيانات جديدة تجمع هذه الميزات إسمها صفوف.
عند إختيارك لقاعدة بيانات مناسبة لمشروعك عليك تحديد أهم النقاط التي يحتاجها المشروع من قاعدة البيانات, فمثلاً قد يحتاج المشروع:
- للتخزين و الإستعلام بسرعة و إستعلاماته بسيطة و مباشرة.
- لتنفيذ إستعلامات معقدة.
- لقاعدة بيانات متنقلة وخفيفة.
- لقاعدة بيانات قادرة على إدارة مئات من المستخدمين في نفس الوقت.
- لبناء نظام معقد فوق قاعدة البيانات.
كل هذه النقاط ستجعل قاعدة بيانات معينة مناسبة أكثر من غيرها, و مهمة المبرمج بعد تحديد قاعدة البيانات هي برمجة النظام ليستطيع العمل مع قاعدة البيانات المختارة مهما كان نوعها.
تتميز صفوف بكونها قاعدة بيانات سهلة الاستخدام والإعداد, قابلة للتطوير, سريعة التنفيذ, متنقلة, و متعددة المستخدمين و مفتوحة المصدر, كل هذه الميزات و أكثر ستجعل قاعدة بيانات صفوف مناسبة لمشروعك حتماً, و سنستعرض الآن بعض هذه المميزات.
سهلة الإستخدام
بنيت صفوف بالأساس لتكون قاعدة بيانات سهلة وسريعة, وتتميز بأنها قاعدة بيانات كائنية (Object-Oriented Database) أي أنها تتعامل مع الكائنات كوحدات تخزين, إذ تسمح صفوف بتخزين و قراءة الكائنات مباشرة على عكس قواعد البيانات غير الكائنية مثل قواعد بيانات SQL وغيرها, فمثلاً لنفترض أنه لدينا كائن Student و نريد إضافته في قاعدة بيانات SQL سيكون الكود كالتالي.
statement.executeUpdate("INSERT INTO Students VALUES ('"+student.getFirstName()+"', '"+student.getLastName()+"', "+student.getAge()+")");
كما في الكود السابق ستجد أننا قمنا بتقطيع أمر SQL وإضافة بيانات الكائن فيه في كود صعب القراءة وقد يحتوي الكثير من الأخطاء, لذلك طور المبرمجون بيئات عمل تربط الكائنات بقواعد بيانات SQL بحيث تختصر الكود مثل Hibernate, لكن بيئات العمل هذه هي عبء إضافي على المعالجة إذ أنها تقوم بإنشاء أوامر SQL من خلال الكثير من الإعدادات ثم ترسل الأمر لقاعدة البيانات, أما صفوف فتقوم بتخزين الكائن و قراءته مباشرة, و لذلك فهي أسرع في التنفيذ, و هذا مثال على تخزين الكائن Student في صفوف.
sess.execute(new Bind(student).to("students"));
و ينطبق الأمر أيضاً على قراءة الكائنات, فعندما تقوم بالإستعلام عن الكائن Student في قاعدة بيانات SQL ستحتاج للكثير من الأسطر البرمجية التي تختصرها صفوف في سطر واحد.
قاعدة بيانات محلية و مستضافة
يمكن لصفوف أن تعمل كقاعدة بيانات محلية متنقلة مثل SQLite إذ أنه يمكن تشغيلها و إطفاؤها من خلال الكود, و هي خفيفة ففي إصدارها الثالث حجمها لا يتجاوز 100KB, و يمكنها أيضاً العمل على خادم و يمكن لأكثر من برنامج الإتصال بها و إرسال الإستعلامات إليها و تنفيذ عن بعد مما يجعلها مناسبة لبرامج الحاسوب و المواقع على حد سواء.
علائقية
يمكن في صفوف إنشاء العلاقات بين الكائنات بسهولة فهي ليست مجرد وسيلة لتخزين البيانات فقط.
لا تحتاج لإعدادات
تحتاج قواعد بيانات SQL الكثير من الإعدادات لتكون جاهزة للاستخدام كعمليات إنشاء الجداول أما صفوف فلا تحتاج لأي إعدادات مسبقة, إذ يمكن بعد إنشاء قاعدة البيانات و الإتصال بها إستخدامها مباشرة للتخزين و القراءة.
سريعة
بتجارب عملية أثبتت صفوف سرعتها بتنفيذ العمليات, ففي تجربة تخزين و قراءة مئة كائن إستغرقت في أحسن الأحوال SQLite و قتاً مقداره 4.36 ضعف الوقت الذي إستغرقته صفوف.
تمتلك نظام تحديد للصلاحيات قابل للتخصيص
تمتلك صفوف كغيرها من قواعد البيانات نظاماً لتحديد صلاحيات المستخدمين, وتتميز صفوف عن غيرها بأن نظامها قابل للبرمجة و التعديل تماماً على عكس قواعد البيانات الأخرى, فمثلاً يمكنك تحديد قبول أو رفض تنفيذ الأوامر لمستخدمين محددين من خلال كودك البرمجي.
تدعم الإنتقالات Transactions
تدعم صفوف الإنتقالات بخصائصها الأربعة ACID (الذرية, التناسق, العزل, الدوام).
قابلة للتخصيص
صفوف هي قاعدة بيانات مبنية بلغة جافا, وكل ما فيها قابل للتخصيص, إذ يمكنك كتابة الأوامر الخاصة بك بسهولة و تنفيذها على قاعدة البيانات على عكس قواعد بيانات SQL التي لا يمكنك تخصيصها, و تسمح رخصة صفوف لك بتنزيل الكود المصدري لها و تعديلها بحيث تناسب مشروعك.
يمكنك الاطلاع على المزيد في صفحة صفوف في Github و قراءة الدليل wiki الذي سيعلمك طريقة إستخدامها.
ملاحظة: الشرح في صفحة صفوف موضوع باللغتين العربية و الإنجليزية.