تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
db4o database
#1
db4o open source object database



ظهر هذا المشروع من قواعد البيانات الكائنية وكان مفتوح المصدر بموجب ترخيص 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
وقامت بعض الشركات فعلا باستخدامها ، وسط بعض الاقاويل ان البعض لازال مترددا في الدخول عليها والاعتماد عليها في انشاء برامجه ومنظوماته
وهي تدعم جهة الخادم والعميل
الرد
#2
يعطيك الف صحة .
الرد
تم الشكر بواسطة:
#3
إقتباس :يعطيك الف صحة .

اجمعين 
اذا لم تجربها من قبل جربها اخ الدوسري نريد رأيك في هذه التجربة
فملعبها وقوتها عند من يجيد التعامل مع الـ Class وكذلك Collection  بجميع انواعها ومشتقاتها وانت في الميدان هذا الحصان الذي يمكن الرهان عليه
الرد
#4
NoSql or FileBased Database
مالفرق بينها وبين LiteDB ؟

الرد
تم الشكر بواسطة: viv
#5
إقتباس :NoSql or FileBased Database
 
 لا استطيع ان اعطي الفرق بينهم NoSQL من الاشياء التي حملتها ولم اجربها حتى الان اخ محمد كريم 

وايضا LiteDB ولم اجربها ايضا اعتقد من عائلات NoSQL ايضا وهي لا تعني انها لا يوجد فيها SQL كما يتبادر الى اذهان البعض وانما هي تعني Not Only SQL

ومن امثلتها MongoDB و Hypertable  و Cassandra  و SimpleDB و BigTable و Arnaud BOUCHEZ

كل ما اعرفه عنها انها قواعد البيانات من عائلة NoSQL ذات كفاءة عالية ولها مستقبل واعد، يكفي أن كبريات الشركات تتسابق لاستخدامها

ولا اعرف ان كانت مفتوحة المصدر ومجانية ام انها تجارية

بالنسبة الى فيربيرد فهي قوية وثابتة ومجانية بالكامل ، شأنها شأن العديد غيرها يعني لا تحتاج الى دفع درهم واحد ثمناً لها .
الرد
تم الشكر بواسطة: محمد كريّم , محمد كريّم
#6
مجانية ومفتوحة المصدر و NoSQL تعني (لا علائقية) ولا يقصد بالاسم لغة الاستعلام

الرد
تم الشكر بواسطة: viv , viv
#7
الذي افهمه انها تعني لا يوجد لغة الاستعلام ، وحسب كتاب اجنبي لاحدهم لا اذكره الان يقول انها تعني Not Only SQL أي فيها وتقبل الاستعلامات ولكن يمكنك ان تستغني عنها
الرد
تم الشكر بواسطة: محمد كريّم


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  سؤل بخصوص google database name and google database structure oneyemenweb2 1 746 17-10-12, 07:06 PM
آخر رد: oneyemenweb2

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم