بوستجري إس كيو إل
تاريخ بوستجريسكل

في عام 1986م جلس البروفسور في جامعة كلفونيا في بيركلي والخبير المشهور في تقنية قواعد البيانات مايكل ستونبركر Michael Stonebraker ليبني نظام قواعد بيانات جديد ومحسن، وبالرغم أنه كان مستمتع بنجاح مشروعه السابق في قواعد البيانات المسمى INGRES ، إلا أنه قرر أن يطبق رؤيته الجديدة في مشروع جديد كليا، بدلا من البناء على المشروع السابق بسبب تعقيداته، مما أنتج في النهاية مشروع Postgres . و خلال ثمان السنوات التالية، أخذ شهرة مشروع Postgres بالنمو خصوصا بين مجتمع الباحثين، حتى وصلت تلك الشهرة حد الإغراق، مما أخذ كل وقت الباحثين في مشروع Postgres الذين كان عليهم مواصلة بحوثهم في قواعد البيانات، لذا كانت تلك الشهرة هي القاتلة لمشروع Postgres الذي انتهى رسميا مع الإصدارة 4.2 ، و لحسن الحظ أن رخصة هذه المشروع هي من ترخيص BSD المفتوح المصدر، مما أمن استمرارية هذا المشروع، حيث قام مجموعة من المطورين بتبني هذا المشروع عن طريق الإنترنت، وفي عام 1994م أضاف أندرو يو وجوللي تشن محلل SQL ( ليستبدل نظام لغة QUEL السابق ) ، و أطلقا المشروع تحت اسم Postgres95 ، و مع حلول عام 1996م أصبح من البديهي أن اسم Postgres95 لا يمثل الرؤية المستقبلية للمشروع، فلذا تم إطلاق قاعدة البيانات باسم PostgreSQL 6.0 بواسطة مجتمع المطورين، ليعكس أصل المشروع والخصائص الجديدة التي اضيفت إليه.
في 2008م صدرت النسخة الإصدار 8.3 شملت تحسينات رئيسية. في الأداء:
الصفوف المجمعة (HOT), والتي تزيل ما يصل إلى ثلاث أرباع الصيانة اللازمة للجداول التي يتم تحديثها باستمرار.
نقاط التفريغ الموزعة حسب العبء، حيث يقل نشاط نقاط التفريغ خلال ذروة الأعباء.
ضبط ذاتي وآلي لعملية الكتابة في الخلفية.
خيار التنفيذ غير التزامني يضمن سرعة استجابة أعلى في بعض الإجراءات. هذه التغييرات تسرع أيضاً من سعة معالجة المعاملات، ما بين 5% و 30%، حسب حجم النشاط.
في 2011م صدرت النسخة 9.1 ، أهم الأشياء الجديدة في هذه الإصدارة كالتالي:
النسخ المتماثل المتزامن Synchronous Replication : حيث يضمن أن البيانات موجودة على عدة خوادم في حالة انهيار الخادم الرئيسي، قد يسبب هذا التزامن بطئ في الأداء ولكن يضمن أن البيانات لن تفقد.
الفرز على مستوى الأعمدة: حيث تم دعم الفرز اللغوي الصحيح على مستوى قاعدة البيانات ككل والجدول و لأعمدة.
الجداول غير المسجلة: حيث تقدم تحسن في الأداء كثير للبيانات سريعة الزوال.
مؤشر القرب K-Nearest-Neighbor Indexing : حيث يقوم هذا المؤشر بإعطاء المسافة، مما يسرع استعلامات المواقع والبحث في النصوص.
تسلسل عزل اللقطات Serializable Snapshot Isolation : حيث يحافظ على اتساق المعاملات المتزامنة بدون المنع ؛ وذلك باستخدام ما يعرف باسم "true serializability"
عبارات جدول عامة قابلة للكتابة Writeable Common Table Expressions : حيث يمكن بواسطتها تنفيذ تحديث بيانات معقدة متعددة المراحل باستخدام استعلام مفرد.
الأمان المحسن: حيث يمكن نشر نظام أمني مثل المستوى الأمني العسكري، والتحكم في الوصول الإلزامي.
في يناير 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 لتحسين أمان كلمات السر وطرق إرسالها واستقبالها.