ثريد » قاعد بيانات PostgreSQL

قاعد بيانات PostgreSQL

بين الSQL و الNoSQL هناك قواعد بيانات SQL مشهورة لكنها ليست كغيرها. ماذا نعرف عن PostgresSQL؟ هل هي مجرد بديل اخر لMySQL؟ هذه الليلة سنستعرض جمال الObject Relational Database فيها. سنرى الPolymorphism و ال Inheritance و ال Encapsulation.

قاعد بيانات #PostgreSQL ظهرت في الثمانينات كنسخة مطورة من قاعدة بيانات قبلها ظهرت في السبعينات اسمها Ingres و من هنا اتى الإسم Postgres و للعلم اغلب قواعد البيانات هي تطوير لIngres بمافيها SQL Server و Sybase. و Ingres اعتمدت على مشروع IBM System R الذي اصبح DB2 لاحقاً.

قاعدة بيانات PostgreSQL بالإضافة لكونها Relational فهي Object-Relational ايضاً, يعني فيها خصائص الObject Oriented مثل إنشاء انواع جديدة من البيانات كأنك تتعامل مع Class بالإضافة إلى الـ Inheritance و الPolymorphism لكن لايعني هذا انها Object-Oriented Database فهناك فرق.

نبدأ بالInheritance , تخيل ان لديك نظام فيه عملاء Customers و موظفين Employees فممكن ننشيء في البداية جدول اسمه Persons فيه حقول FirstName,LastName,IDNo و بعدها ننشيء جدول Employees فيه فقط حقل EmployeeNo يورث من Persons باقي الحقول و نتعامل معهم كجدولين مختلفين كما في الصورة.

.ليس هذا فقط , ايضاً يمكن إضافة جدول ثالث اسمه CreditCustomers يورث من Customers و Persons في نفس الوقت. اي أن قاعدة البيانات تدعم الMulti Inheritance. و لكل جدول الPK الخاص به و عند التوريث يأخذ اغلب الصفات بمافيها الIndexes و الConstraints لكن ليس الTriggers مثلاً.

الPolymorphism تخليك تنشيء مثلاً Function تقوم بعمل معين مع الجدول Person و تقوم بعمل مختلف مع الجدول Employee كطريقة احتساب الTax مثلاً. قد تكون اكثر من Function بنفس الإسم.

صورة اخرى للPolymorphism هي الOperator فعلامة + تراها تعمل بشكل مختلف عند جمع حقلين من نوع نص او حقلين من نوع رقمي او عند اضافة رقم إلى تاريخ.

بالنسبة للEncapsulation يمكن اعتبار الView نوع من انواعه حيث أننا اخفينا بها تعقيدات الTable Structure. مع العلم ان الViews يمكن ان تكون Updatable و يمكن تخصيص بعض الحقول لتكون Updatable دون غيرها.

الAbstraction يتم من خلال Custom Datatype تخلينا ننشيء نوع حقل جديد نضيف له الConstraints التي يحتاجها و ممكن نضيف له Functions معينة. الفكرة هنا انه بهذه الخاصية ممكن نحول الداتابيز العادية إلى شيء جديد يخدم قطاع معين مثل ما انشأوا PostGIS الجغرافية من Postgres.

كذلك امازون AWS قامت بتطوير خدماتها السحابية لقواعد البيانات الموزعة AWS Aurora لتشمل PostgreSQL جنباً إلى جنب مع MySQL و هي متوافقة مع PostgreSQL العادية 100%.

المصدر