db4o open source object database
ظهر هذا المشروع من قواعد البيانات الكائنية وكان مفتوح المصدر بموجب ترخيص GPL وكان له موقع ولكن اختفى فجاءة
لا اعلم هل لانه ليس هناك تطوير اكثر من الذي وصله له ام تم احتكاره فيما بعد .
طبعا بالامكان تحميل اخر اصدار توقفت عليه واعتقد ان الاصدار 8
اعتقد كان هذا المشروع سابق لزمانه وظهر بوقت مبكر جدا لم يستوعبه الناس والمبرمجين ، سواء العميل او المبرمج ، فعادة العميل يطلب هو نوع قاعدة البيانات التي يريدها
ولم يكن من السهل ان تقنع عميل بقوة محرك قاعدة البيانات هذا وسرعته ، فالشئ الذي تعرفه افضل من الذي تجهله
اولا لانها لم تكن قواعد بيانات علائقية .
العلاقات بين الجداول تم الغاءها نهائيا مما جعلها سريعة جدا حتى انهم يقولون انها اسرع بالالاف المرات من قواعد البيانات العلائقية
ثانيا لست في حاجة الى تصميم اي جداول وحقول ولا الى اي برنامج لادارتها .
اولا لنرى هذا الكود
هذا السطر يستخدم دائما للاتصال بقاعدة البيانات لاجل القراءة او الحذف او التعديل اذا وجدها اتصل بها واذا لم يجدها إنشاءها
لاحظ هنا بمسار قاعدة البيانات لا يوجد اي بارمترات ولا اي مفاتيح ولا قيم فقط اسم الملف سيبحث مباشرة في مجلد المشروع
بعدها هنا سيضيف السجلين
تم سيقوم بقراءة البيانات للسجل الذي فيه القيمة 101 وهو خاص بالاسم Michael Schumacher
حقيقة هو سوف يجلب بيانات اي سجل له القيمة 101 مالم نحدد مزيد من الشروط فمكان الاسم جعلناه Null يعني اي اسم
الذي يحدث في الحفظ لسجل جديد انه ينشئ السجلات والحقول بناء على اي Class نقوم بأنشاءها دعونا نرى شكل هذا الـ Class التي تم استخدامها فوق
ببساطة نفتح الفيجوال ستوديو وتنشئ الكلاس الذي تريد تم تخزن بياناتك عن طريقه لا تحتاج الى إنشاء قاعدة بيانات ولا الى جداول وحقول ولا الى برنامج لتحريرها
انظر للكود التالي :
هذا هو كل الكود الذي تحتاجه لحفظ سجل وانشاء قاعدة البيانات بحقولها
وهذا لقراءة منها
وهذا للبحث عن اسم شخص وحذف سجله على سبيل المثال
هي سريعة لانها تحفظ البيانات ايضا بشكلها الذي خزنتها به كـ Calss مثلما صممته في برنامجك وكما هو بشحمه ولحمه وايضا لعدم وجود علاقات بين البيانات
هناك اسلوب معين في ادارة هذه البيانات وتخزينها واستردادها .
كما انها تدعم لغة الاستعلام LINQ
لها العديد من الفيديوهات في الانترنت على سبيل المثال
[video=dailymotion]https://www.youtube.com/watch?v=EC-bkM6ulU8[/video]
ولها الكثير من الكتب والشروحات ، كانت بدايتها تقريبا سنة 2004 واختفت تقريبا بعد ضجة اعلامية في 2008
وقامت بعض الشركات فعلا باستخدامها ، وسط بعض الاقاويل ان البعض لازال مترددا في الدخول عليها والاعتماد عليها في انشاء برامجه ومنظوماته
وهي تدعم جهة الخادم والعميل
ظهر هذا المشروع من قواعد البيانات الكائنية وكان مفتوح المصدر بموجب ترخيص GPL وكان له موقع ولكن اختفى فجاءة
لا اعلم هل لانه ليس هناك تطوير اكثر من الذي وصله له ام تم احتكاره فيما بعد .
طبعا بالامكان تحميل اخر اصدار توقفت عليه واعتقد ان الاصدار 8
اعتقد كان هذا المشروع سابق لزمانه وظهر بوقت مبكر جدا لم يستوعبه الناس والمبرمجين ، سواء العميل او المبرمج ، فعادة العميل يطلب هو نوع قاعدة البيانات التي يريدها
ولم يكن من السهل ان تقنع عميل بقوة محرك قاعدة البيانات هذا وسرعته ، فالشئ الذي تعرفه افضل من الذي تجهله
اولا لانها لم تكن قواعد بيانات علائقية .
العلاقات بين الجداول تم الغاءها نهائيا مما جعلها سريعة جدا حتى انهم يقولون انها اسرع بالالاف المرات من قواعد البيانات العلائقية
ثانيا لست في حاجة الى تصميم اي جداول وحقول ولا الى اي برنامج لادارتها .
اولا لنرى هذا الكود
كود :
using System;
using Db4objects.Db4o;
public class Test {
static string _file = "store.db4o";
// A very basic db4o example that demonstrates
// automatic schema generation and Query-By-Example
public static void Main (string [] args)
{
using (IObjectContainer db = Db4oFactory.OpenFile (_file)) {
db.Set (new Pilot ("Michael Schumacher", 101));
db.Set (new Pilot ("Rubens Barrichello", 99));
db.Commit ();
IObjectSet pilots = db.Get (new Pilot(null, 101));
foreach (Pilot p in pilots) {
Console.WriteLine (p);
}
}
}
}
هذا السطر يستخدم دائما للاتصال بقاعدة البيانات لاجل القراءة او الحذف او التعديل اذا وجدها اتصل بها واذا لم يجدها إنشاءها
كود :
using (IObjectContainer db = Db4oFactory.OpenFile (_file))
لاحظ هنا بمسار قاعدة البيانات لا يوجد اي بارمترات ولا اي مفاتيح ولا قيم فقط اسم الملف سيبحث مباشرة في مجلد المشروع
كود :
static string _file = "store.db4o";
بعدها هنا سيضيف السجلين
كود :
db.Set (new Pilot ("Michael Schumacher", 101));
db.Set (new Pilot ("Rubens Barrichello", 99));
تم سيقوم بقراءة البيانات للسجل الذي فيه القيمة 101 وهو خاص بالاسم Michael Schumacher
كود :
IObjectSet pilots = db.Get (new Pilot(null, 101));
foreach (Pilot p in pilots) {
Console.WriteLine (p);
}
حقيقة هو سوف يجلب بيانات اي سجل له القيمة 101 مالم نحدد مزيد من الشروط فمكان الاسم جعلناه Null يعني اي اسم
الذي يحدث في الحفظ لسجل جديد انه ينشئ السجلات والحقول بناء على اي Class نقوم بأنشاءها دعونا نرى شكل هذا الـ Class التي تم استخدامها فوق
كود :
public class Pilot {
string _name;
int _points;
public Pilot (string name, int points)
{
_name = name;
_points = points;
}
public override string ToString ()
{
return _name + "/" + _points;
}
}
ببساطة نفتح الفيجوال ستوديو وتنشئ الكلاس الذي تريد تم تخزن بياناتك عن طريقه لا تحتاج الى إنشاء قاعدة بيانات ولا الى جداول وحقول ولا الى برنامج لتحريرها
انظر للكود التالي :
كود :
Pilot pilot1 = new Pilot("Michael Schumacher", 100);
db.store(pilot1);
هذا هو كل الكود الذي تحتاجه لحفظ سجل وانشاء قاعدة البيانات بحقولها
وهذا لقراءة منها
كود :
Pilot proto = new Pilot(null, 0);
ObjectSet result = db.queryByExample(proto);
listResult(result);
وهذا للبحث عن اسم شخص وحذف سجله على سبيل المثال
كود :
ObjectSet result = db
.queryByExample(new Pilot("Michael Schumacher", 0));
Pilot found = (Pilot) result.next();
db.delete(found);
هي سريعة لانها تحفظ البيانات ايضا بشكلها الذي خزنتها به كـ Calss مثلما صممته في برنامجك وكما هو بشحمه ولحمه وايضا لعدم وجود علاقات بين البيانات
هناك اسلوب معين في ادارة هذه البيانات وتخزينها واستردادها .
كما انها تدعم لغة الاستعلام LINQ
لها العديد من الفيديوهات في الانترنت على سبيل المثال
[video=dailymotion]https://www.youtube.com/watch?v=EC-bkM6ulU8[/video]
ولها الكثير من الكتب والشروحات ، كانت بدايتها تقريبا سنة 2004 واختفت تقريبا بعد ضجة اعلامية في 2008
وقامت بعض الشركات فعلا باستخدامها ، وسط بعض الاقاويل ان البعض لازال مترددا في الدخول عليها والاعتماد عليها في انشاء برامجه ومنظوماته
وهي تدعم جهة الخادم والعميل