بوستجري إس كيو إل
بوستجريسكل هو نظام إدارة قواعد البيانات علائقي يعتمد التعامل معه على لغة إس كيو إل، يعمل على منصات متعددة من مثل أنظمة التشغيل المستندة إلى يونكس مثل "أوراكل سولاريس"، و "آي بي إم إيه آي إكس" "IBM AIX"، و "إتش بي - يو إكس" "HP-UX" "ريد هات لينكس" "Red Hat Linux" وغيرها من منصات "لينكس" Linux". كذلك يعمل على أنظمة ويندوز؛ و"Mac OS X". بدأ تطويره في قسم علوم الكمبيوتر بيريكلي لجامعة كاليفورنيا عام 1986م على يد البروفسور مايكل ستونبركر.
يصدر بوستجريسكل تحت رخصة خاصة به تسمى رخصة بوستجرسكل وهي رخصة مفتوحة المصدر معتمدة.
في عام 1986م جلس البروفسور في جامعة كلفونيا في بيركلي و الخبير المشهور في تقنية قواعد البيانات مايكل ستونبركر Michael Stonebraker ليبني نظام قواعد بيانات جديد و محسن ، وبالرغم أنه كان مستمتع بنجاح مشروعه السابق في قواعد البيانات المسمى INGRES ، إلا أنه قرر أن يطبق رؤيته الجديدة في مشروع جديد كليا ، بدلا من البناء على المشروع السابق بسبب تعقيداته ، مما أنتج في النهاية مشروع Postgres . و خلال ثمان السنوات التالية ، أخذ شهرة مشروع Postgres بالنمو خصوصا بين مجتمع الباحثين ، حتى وصلت تلك الشهرة حد الإغراق ، مما أخذ كل وقت الباحثين في مشروع Postgres الذين كان عليهم مواصلة بحوثهم في قواعد البيانات ، لذا كانت تلك الشهرة هي القاتلة لمشروع Postgres الذي انتهى رسميا مع الإصدارة 4.2 ، و لحسن الحظ أن رخصة هذه المشروع هي من ترخيص BSD المفتوح المصدر ، مما أمن استمرارية هذا المشروع ، حيث قام مجموعة من المطورين بتبني هذا المشروع عن طريق الإنترنت ، و في عام 1994م أضاف أندرو يو و جوللي تشن محلل SQL ( ليستبدل نظام لغة QUEL السابق ) ، و أطلقا المشروع تحت اسم Postgres95 ، و مع حلول عام 1996م أصبح من البديهي أن اسم Postgres95 لا يمثل الرؤية المستقبلية للمشروع ، فلذا تم إطلاق قاعدة البيانات باسم PostgreSQL 6.0 بواسطة مجتمع المطورين ، ليعكس أصل المشروع و الخصائص الجديدة التي اضيفت إليه .
في 2008م صدرت النسخة الاصدار 8.3 شملت تحسينات رئيسية. في الأداء:في 2011م صدرت النسخة 9.1 ، أهم الأشياء الجديدة في هذه الإصدارة كالتالي:في يناير 2016م، صدرت النسخة 9.5 وجاء بالمميزات التالية
1- إضافة ميزة UPSERT ، وهي تعني "INSERT, ON CONFLICT UPDATE" و تسمح بمعاملة الصفوف الجديدة والمحدثة بالمثل. وهي تسهل تطوير تطبيقات الوب والهواتف بحيث تسمح لقاعدة البيانات بالتعامل مع التضارب في البيانات المحدثة.
2- إضافة ميزة الأمان على مستوى الصف، بحيث يمكن التحكم في صلاحيات كل عمود و كل صف على حدة. وهذه الميزة هي نتاج عمل خمس سنوات من تطوير المميزات الأمنية في قاعدة البيانات.
3- إضافة مميزات خاصة للبيانات الضخمة، كان على قاعدة بيانات PostgreSQL أن تتأقلم مع تطبيقات البيانات الضخمة Big Data ، وفي هذه الإصدارة جلبت عدة مميزات، من أهمها:
- فهرسة BRIN ، وهذا نوع خاص من الفهرسة يتميز أنه صغير ولكن ممتاز لجداول الضخمة.
- عمليات ترتيب أسرع: أصبحت قاعدة PostgreSQL ترتب الأرقام و النصوص أسرع ب2 إلى 12 مرة ، وذلك بفضل استخدام خوارزمية "abbreviated keys"
وفي عام أكتوبر 2016م، صدرت النسخة 9.6 ركزت هذه الإصدارة على تحسين الأداء و ودعم التوسع ، و دعم بحث العبارات ، و أهم هذه الإضافات:
دعم الاستعلامات الموازية حيث أضافت الإصدارة 9.6 ميزة تقسيم بعض الاستعلامات إلى مهام أصغر و توزيعها على كل أنوية المعالج؛ مما يسرع إرجاع النتائج ، هذا الميزة قد تسرع الاستعلامات إلى 32 ضعفا (يعتمد الأنوية الموجودة) ، الاستعلامات المدعومة في هذه الميزة هي scan و aggregation و join.
تحسين التكرار المتزامن و postgres_fdw في هذه الإصدارة أضيف خيارين لميزة التكرار المتزامن في PostgreSQL مما يجعلها تحافظ على بيانات متسقة عبر عنقود قواعد البيانات ، الأول أصبحت PostgreSQL تسمح بمجموعات الضبط للتكرار المتزامن ، و الثاني أصبح نمط remote_apply ينشئ عرض أكثر اتساقا للبيانات عبر عقد المتعددة، بهذه الميزات أصبحت قدرة التكرار المبني في PostgreSQL بنفسها قادرة على محافظة على مجموعة متماثلة من العقد لتكون مناسبة لمهمات توزيع الأحمال load-balancing .
كذلك في هذه الإصدارة أصبح مشغل postgres_fdw (هذا المشغل يدعم التواصل بين قاعدة PostgreSQL إلى أخرى) يمتلك القدرة على تنفيذ مهام على القواعد البيانات البعيدة، حيث أصبح بالإمكان تنفيذ عمليات sort و join و batch data update ؛ مما يمكن المستخدمين من توزيع الأحمال على عدة خوادم PostgreSQL، هذه المزايا قريبا ستكون متوفرة للمشغلات اFWD الأخرى.
تحسين البحث أصبحت PostgreSQL تدعم ميزة البحث عن العبارات ؛ بحيث تسمح للمستخدم للبحث عن العبارات أو كلمات ذات تباعد معين باستخدام فهراس GIN.
في أكتوبر 2017م، صدرت النسخة 10 ، أول تغيير هو طريقة عنونة الإصدار حيث يكون الرقم الأول هو إصدارة رئيسية و الرقم الفرعي إصدارة فرعية لإصلاح العلل في الإصدارة الرئيسة على عكس النظام السابق.
وفي سعي لتحسيين أداء PostgreSQL للأحمال الموزعة على عدة عقد ؛ شملت هذه الإصدارة دعم أصيل للتكرار المنطقي ، هذه الميزة تسمح بإرسال التغييرات على مستوى قاعدة البيانات و على مستوى الجدول بشكل مستقل إلى قواعد بيانات PostgreSQL الأخرى.
الميزة الثانية هي جعل ميزة تقسيم الجدول مضمنة في تعريف الجدول حين إنشاءه، و تقسيم الجدول أجزاء أصغر تسهل عملية إدارة البيانات و صيانتها.
الميزة الثالثة هو تحسين الاستعلامات المتوازية حيث استمرت الجهود في استغلال تعدد الأنوية لتحسين الأداء ، وفي هذه الإصدارة دعم أنواع مختلفة من المسح مثل Bitmap Heap Scan و Index Scan و Index-Only Scan ، و حسن كذلك عملية إعادة تجميع المخرجات.
الميزة الرابعة هو تدشين نظام التصويت Quorum Commit للتزامن ، وهو نظام يعطي كل عقدة من العقد التزامن صوت ، و عندما تجتمع عدة أصوات يمكن أتأكد بعدها أن المعلومات قد كتبت بأمان في عدة عقد، في هذه الإصدارة أصبح مدير قاعدة البيانات طريقتين لتجميع الأصوات الأولى بالأولوية وثانية بدون أولوية ، مما يتيح مرونة ضبط التزامن في أنظمة التكرار المعقدة.
و الميزة الخامسة هو دعم نظام التصاريح SCRAM-SHA-256 لتحسين أمان كلمات السر وطرق إرسالها و استقبالها.
تأتي PostgreSQL مزودة بمميزات ذات أهمية كبيرة للمشاريع البرمجية الشخصية و المشاريع البرمجية للشركات الكبرى ، وأهم هذه المميزات:
حيث تتميز بوستجرسكل أنه لا حدود لحجم قواعد بياناتها، وأن أعلى قيمة لحجم الجدول هو 32 تيرابايت و أعلى حجم للصف الواحد هو 1.6 تيربايات، وأعلى حجم لحقل واحد هو واحد جيجا، وأنه لا حدود لعدد الصفوف في الجدول الواحد وأقصى عدد للأعمدة في الجدول الواحد ما بين 250 إلى 1600 على حسب نوع العمود.
دائما يناضل مطورو PostgreSQL ليجعلوا سلامة البيانات على قائمة أولوياتهم ،حيث أن فلسفة مطوري PostgreSQL هي جعلها أولا تعمل بشكل صحيح ، ثم بعد ذلك اجعلها تعمل بسرعة.
في أغلب أنظمة قواعد البيانات التقليدية ، يتم التحكم بالعمليات المتزامنة بواسطة سلسلة مختلفة من آليات الإقفال ، و الكثير من هذه الأنظمة سريعة جدا في الاستعلامات وضع القراءة-فقط ، أو عندما يكون عدد المستخدمين محدود ، و لكن تغرق في حالة مقابلة أعدد ضخمة من المستخدمين الذين يقرؤون و يكتبون في نفس الوقت ، لقد تفادت PostgreSQL هذه المشكلة باستعمال نظام يعرف بالتحكم المتزامن المتعدد الإصدارات Multiversion Concurrency Control (MVCC) ، بحيث أن كل عملية ترى صورة ( أو نسخة ) فقط من البيانات التي تعمل عليها ، مما يعزلها عن التغيرات التي تحصلت في البيانات الأصلية بواسطة المستخدمين الآخرون.
تدعم بوستجرسكل الكائنات الأساسية لقواعد البيانات مثل القيود و المفتاح الأجنبي و القوادح Trigger و العروض views منذ سنوات ، و هي كذلك تدعم خصائص غير منتشر بشكل كبير مثل التجميعات المخصصة custom aggregates و النطاقات domains و العوامل المخصصة custom operators و القواعد rules ، و إضافة إلى ذلك فإن دعم الاستعلامات الفرعية في PostgreSQL هو الأول في مجاله مما يسمح بالاستعلامات الفرعية في فقرات SELECT و FROM و WHERE في أي استعلام.
كذلك تدعم PostgreSQL أيضا الكثير من لغات البرمجة مثل C و SQL و PL/pgSQL و PL/Perl و PL/PHP و PL/Tcl و PL/Ruby ، هذا الغنى من الخصائص سمح ل PostgreSQL بالانتقال إلى إضافة خصائص متقدمة جدا مثل الاسترجاع نقطة-في-الوقت point-in-time recovery (PITR) ، و نقاط الحفظ ( العمليات المتفرعة ) و فراغات الجدول tablespaces .
فضلا عن إتاحة مصدر شفرة PostgreSQL ، فإن PostgreSQL جعلت إضافة الامتدادات لقاعدة البيانات أمرة في غاية السهولة مع التجميعات المخصصة ، و أنواع البيانات ، و النطاقات و العوامل . إن فهرسة كل النص ، و تطابق العبارات الغامضة ، و OpenGIS مجرد أمثلة من حزم كثيرة تم بناؤها على PostgreSQL.
دائما تسعى PostgreSQL بخطى كبيرة لتعمل قد الإمكان على مختلف المنصات ، لقد تم نقلها إلى أكثر من دزينة من منصات اليونكس و اللينكس من الأنظمة المشهورة مثل FreeBSD و رد هات لينكس ، و حتى المنصات المغمورة مثل QNX و BeOS ، و كذلك حتى منصات الألعاب مثل بلاستشن 2 من سوني ، و مكعب الألعاب ننتوندو .
تدعم PostgreSQL نطاق واسع من بروتوكولات الأمن ، و الكثير من خيارات التكوين ، و كذلك خصائص داخل القاعدة البيانات لتساعدك على التحكم بمن يستطيع الوصول إلى البيانات و كيفية ذلك في قاعدة البيانات ،
إن أمن PostgreSQL يمكن أن يقسم إلى صنفين عامين :
* وسائل توثيق قياسية ، مثلا يمكن استخدام Kerberos و Pluggable AuthenticationModule (PAM) و ident و MD5 encryption لتحكم بوصول المستخدمين إلى قاعدة البيانات ، و هذا يمكن أن يعد لكل مستخدم ، و لكل قاعدة بيانات ، و لكل جهاز موصول أو توليفة من هذه الخيارات حسب متطلبات بيئتك ، و حتى يمكنك أن تطلب أن يتم الإتصال بواسطة طبقة المقابس الآمنة SSL.
* الصلاحيات الداخلية ، باستخدام أوامر SQL القياسية مثل GRANT و REVOKE لتسمح بالتحكم في الكائنات في داخل قاعدة البيانات ، بحيث يمكن أن ينشئ مستخدمين بصلاحية الوصول إلى كل الجداول أو إلى جداول محدودة أو بصلاحيات القراءة فقط ، و مع جمع هذا مع الخصائص المتقدمة ( مثل الدوال و العروض و المخططات ) تستطيع أن تجعل مستخدمين مختلفين يريا تمثيلين مختلفين تماما لنفس قاعدة البيانات .
تم ترخيص PostgreSQL تحت رخصة مشتقة من رخصة BSD ، والتي تعني أنه يمكن أن تستخدم في التطبيقات المفتوحة المصدر و التجارية مجانا.