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

من ويكيبيديا، الموسوعة الحرة

بوستجريسكل (بالإنجليزية: PostgreSQL)‏ هو نظام إدارة قواعد البيانات علائقي يعتمد التعامل معه على لغة إس كيو إل، يعمل على منصات متعددة[9] من مثل أنظمة التشغيل المستندة إلى يونكس مثل "أوراكل سولاريس"، و "آي بي إم إيه آي إكس" "IBM AIX"، و "إتش بي - يو إكس" "HP-UX" "ريد هات لينكس" "Red Hat Linux" وغيرها من منصات "لينكس" Linux". كذلك يعمل على أنظمة ويندوز؛ و"Mac OS X". بدأ تطويره في قسم علوم الكمبيوتر بيريكلي لجامعة كاليفورنيا عام 1986م على يد البروفسور مايكل ستونبركر.[10]

يصدر بوستجريسكل تحت رخصة خاصة به تسمى رخصة بوستجرسكل[11] وهي رخصة مفتوحة المصدر معتمدة.[12]

تاريخ بوستجريسكل[عدل]

في عام 1986م جلس البروفسور في جامعة كلفونيا في بيركلي والخبير المشهور في تقنية قواعد البيانات مايكل ستونبركر Michael Stonebraker ليبني نظام قواعد بيانات جديد ومحسن، وبالرغم أنه كان مستمتع بنجاح مشروعه السابق في قواعد البيانات المسمى INGRES ، إلا أنه قرر أن يطبق رؤيته الجديدة في مشروع جديد كليا، بدلا من البناء على المشروع السابق بسبب تعقيداته، مما أنتج في النهاية مشروع Postgres . و خلال ثمان السنوات التالية، أخذ شهرة مشروع Postgres بالنمو خصوصا بين مجتمع الباحثين، حتى وصلت تلك الشهرة حد الإغراق، مما أخذ كل وقت الباحثين في مشروع Postgres الذين كان عليهم مواصلة بحوثهم في قواعد البيانات، لذا كانت تلك الشهرة هي القاتلة لمشروع Postgres الذي انتهى رسميا مع الإصدارة 4.2 ، و لحسن الحظ أن رخصة هذه المشروع هي من ترخيص BSD المفتوح المصدر، مما أمن استمرارية هذا المشروع، حيث قام مجموعة من المطورين بتبني هذا المشروع عن طريق الإنترنت، وفي عام 1994م أضاف أندرو يو وجوللي تشن محلل SQL ( ليستبدل نظام لغة QUEL السابق ) ، و أطلقا المشروع تحت اسم Postgres95 ، و مع حلول عام 1996م أصبح من البديهي أن اسم Postgres95 لا يمثل الرؤية المستقبلية للمشروع، فلذا تم إطلاق قاعدة البيانات باسم PostgreSQL 6.0 بواسطة مجتمع المطورين، ليعكس أصل المشروع والخصائص الجديدة التي اضيفت إليه.[10]

في 2008م صدرت النسخة الإصدار 8.3 شملت تحسينات رئيسية. في الأداء:

  • الصفوف المجمعة (HOT), والتي تزيل ما يصل إلى ثلاث أرباع الصيانة اللازمة للجداول التي يتم تحديثها باستمرار.
  • نقاط التفريغ الموزعة حسب العبء، حيث يقل نشاط نقاط التفريغ خلال ذروة الأعباء.
  • ضبط ذاتي وآلي لعملية الكتابة في الخلفية.
  • خيار التنفيذ غير التزامني يضمن سرعة استجابة أعلى في بعض الإجراءات. هذه التغييرات تسرع أيضاً من سعة معالجة المعاملات، ما بين 5% و 30%، حسب حجم النشاط.[13]

في 2011م صدرت النسخة 9.1 ، أهم الأشياء الجديدة في هذه الإصدارة كالتالي:

  • النسخ المتماثل المتزامن Synchronous Replication : حيث يضمن أن البيانات موجودة على عدة خوادم في حالة انهيار الخادم الرئيسي، قد يسبب هذا التزامن بطئ في الأداء ولكن يضمن أن البيانات لن تفقد.
  • الفرز على مستوى الأعمدة: حيث تم دعم الفرز اللغوي الصحيح على مستوى قاعدة البيانات ككل والجدول و لأعمدة.
  • الجداول غير المسجلة: حيث تقدم تحسن في الأداء كثير للبيانات سريعة الزوال.
  • مؤشر القرب K-Nearest-Neighbor Indexing : حيث يقوم هذا المؤشر بإعطاء المسافة، مما يسرع استعلامات المواقع والبحث في النصوص.
  • تسلسل عزل اللقطات Serializable Snapshot Isolation : حيث يحافظ على اتساق المعاملات المتزامنة بدون المنع ؛ وذلك باستخدام ما يعرف باسم "true serializability"
  • عبارات جدول عامة قابلة للكتابة Writeable Common Table Expressions : حيث يمكن بواسطتها تنفيذ تحديث بيانات معقدة متعددة المراحل باستخدام استعلام مفرد.
  • الأمان المحسن: حيث يمكن نشر نظام أمني مثل المستوى الأمني العسكري، والتحكم في الوصول الإلزامي.[14]

في يناير 2016م، صدرت النسخة 9.5 وجاء بالمميزات التالية

1- إضافة ميزة UPSERT ، وهي تعني "INSERT, ON CONFLICT UPDATE" و تسمح بمعاملة الصفوف الجديدة والمحدثة بالمثل. وهي تسهل تطوير تطبيقات الوب والهواتف بحيث تسمح لقاعدة البيانات بالتعامل مع التضارب في البيانات المحدثة.

2- إضافة ميزة الأمان على مستوى الصف، بحيث يمكن التحكم في صلاحيات كل عمود وكل صف على حدة. وهذه الميزة هي نتاج عمل خمس سنوات من تطوير المميزات الأمنية في قاعدة البيانات.

3- إضافة مميزات خاصة للبيانات الضخمة، كان على قاعدة بيانات PostgreSQL أن تتأقلم مع تطبيقات البيانات الضخمة Big Data ، وفي هذه الإصدارة جلبت عدة مميزات، من أهمها:

- فهرسة BRIN ، وهذا نوع خاص من الفهرسة يتميز أنه صغير ولكن ممتاز لجداول الضخمة.

- عمليات ترتيب أسرع: أصبحت قاعدة PostgreSQL ترتب الأرقام والنصوص أسرع ب2 إلى 12 مرة، وذلك بفضل استخدام خوارزمية "abbreviated keys"[15]

وفي عام أكتوبر 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.[16]

في أكتوبر 2017م، صدرت النسخة 10 ، أول تغيير هو طريقة عنونة الإصدار حيث يكون الرقم الأول هو إصدارة رئيسية والرقم الفرعي إصدارة فرعية لإصلاح العلل في الإصدارة الرئيسة على عكس النظام السابق.

وفي سعي لتحسيين أداء PostgreSQL للأحمال الموزعة على عدة عقد ؛ شملت هذه الإصدارة دعم أصيل للتكرار المنطقي، هذه الميزة تسمح بإرسال التغييرات على مستوى قاعدة البيانات وعلى مستوى الجدول بشكل مستقل إلى قواعد بيانات PostgreSQL الأخرى.

الميزة الثانية هي جعل ميزة تقسيم الجدول مضمنة في تعريف الجدول حين إنشاءه، وتقسيم الجدول أجزاء أصغر تسهل عملية إدارة البيانات وصيانتها.

الميزة الثالثة هو تحسين الاستعلامات المتوازية حيث استمرت الجهود في استغلال تعدد الأنوية لتحسين الأداء، وفي هذه الإصدارة دعم أنواع مختلفة من المسح مثل Bitmap Heap Scan و Index Scan و Index-Only Scan ، و حسن كذلك عملية إعادة تجميع المخرجات.

الميزة الرابعة هو تدشين نظام التصويت Quorum Commit للتزامن، وهو نظام يعطي كل عقدة من العقد التزامن صوت، وعندما تجتمع عدة أصوات يمكن أتأكد بعدها أن المعلومات قد كتبت بأمان في عدة عقد، في هذه الإصدارة أصبح مدير قاعدة البيانات طريقتين لتجميع الأصوات الأولى بالأولوية وثانية بدون أولوية، مما يتيح مرونة ضبط التزامن في أنظمة التكرار المعقدة.

و الميزة الخامسة هو دعم نظام التصاريح SCRAM-SHA-256 لتحسين أمان كلمات السر وطرق إرسالها واستقبالها.[17]

مميزات بوستجريسكل[عدل]

تأتي PostgreSQL مزودة بمميزات ذات أهمية كبيرة للمشاريع البرمجية الشخصية والمشاريع البرمجية للشركات الكبرى، وأهم هذه المميزات:[10]

القدرة الاستيعاب الهائلة[عدل]

حيث تتميز بوستجرسكل أنه لا حدود لحجم قواعد بياناتها، وأن أعلى قيمة لحجم الجدول هو 32 تيرابايت وأعلى حجم للصف الواحد هو 1.6 تيربايات، وأعلى حجم لحقل واحد هو واحد جيجا، وأنه لا حدود لعدد الصفوف في الجدول الواحد وأقصى عدد للأعمدة في الجدول الواحد ما بين 250 إلى 1600 على حسب نوع العمود.[9]

سلامة البيانات[عدل]

دائما يناضل مطورو PostgreSQL ليجعلوا سلامة البيانات على قائمة أولوياتهم، حيث أن فلسفة مطوري PostgreSQL هي جعلها أولا تعمل بشكل صحيح، ثم بعد ذلك اجعلها تعمل بسرعة.[18]

القابلية للتمدد بشكل عالي[عدل]

في أغلب أنظمة قواعد البيانات التقليدية، يتم التحكم بالعمليات المتزامنة بواسطة سلسلة مختلفة من آليات الإقفال، والكثير من هذه الأنظمة سريعة جدا في الاستعلامات وضع القراءة-فقط، أو عندما يكون عدد المستخدمين محدود، ولكن تغرق في حالة مقابلة أعدد ضخمة من المستخدمين الذين يقرؤون ويكتبون في نفس الوقت، لقد تفادت PostgreSQL هذه المشكلة باستعمال نظام يعرف بالتحكم المتزامن المتعدد الإصدارات Multiversion Concurrency Control (MVCC) ، بحيث أن كل عملية ترى صورة ( أو نسخة ) فقط من البيانات التي تعمل عليها، مما يعزلها عن التغيرات التي تحصلت في البيانات الأصلية بواسطة المستخدمين الآخرون.

اكتمال الخصائص[عدل]

تدعم بوستجرسكل الكائنات الأساسية لقواعد البيانات[19] مثل القيود والمفتاح الأجنبي والقوادح 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 جعلت إضافة الامتدادات لقاعدة البيانات أمرة في غاية السهولة مع التجميعات المخصصة، وأنواع البيانات، والنطاقات و العوامل. إن فهرسة كل النص، وتطابق العبارات الغامضة، و [20] OpenGIS مجرد أمثلة من حزم كثيرة تم بناؤها على PostgreSQL.[9]

دعم المنصات[عدل]

دائما تسعى PostgreSQL بخطى كبيرة لتعمل قد الإمكان على مختلف المنصات، لقد تم نقلها إلى أكثر من دزينة من منصات اليونكس واللينكس من الأنظمة المشهورة مثل FreeBSD و رد هات لينكس، وحتى المنصات المغمورة مثل QNX و BeOS ، و كذلك حتى منصات الألعاب مثل بلاستشن 2 من سوني، ومكعب الألعاب ننتوندو.[9]

خيارات أمن مرنة[عدل]

تدعم PostgreSQL نطاق واسع من بروتوكولات الأمن، والكثير من خيارات التكوين، وكذلك خصائص داخل القاعدة البيانات لتساعدك على التحكم بمن يستطيع الوصول إلى البيانات وكيفية ذلك في قاعدة البيانات،

إن أمن PostgreSQL يمكن أن يقسم إلى صنفين عامين:

* وسائل توثيق قياسية، مثلا يمكن استخدام Kerberos و Pluggable AuthenticationModule (PAM) و ident و MD5 encryption لتحكم بوصول المستخدمين إلى قاعدة البيانات، وهذا يمكن أن يعد لكل مستخدم، ولكل قاعدة بيانات، ولكل جهاز موصول أو توليفة من هذه الخيارات حسب متطلبات بيئتك، وحتى يمكنك أن تطلب أن يتم الإتصال بواسطة طبقة المقابس الآمنة SSL.

* الصلاحيات الداخلية، باستخدام أوامر SQL القياسية مثل GRANT و REVOKE لتسمح بالتحكم في الكائنات في داخل قاعدة البيانات، بحيث يمكن أن ينشئ مستخدمين بصلاحية الوصول إلى كل الجداول أو إلى جداول محدودة أو بصلاحيات القراءة فقط، ومع جمع هذا مع الخصائص المتقدمة ( مثل الدوال والعروض و المخططات ) تستطيع أن تجعل مستخدمين مختلفين يريا تمثيلين مختلفين تماما لنفس قاعدة البيانات.

ترخيص خالي من المتاعب[عدل]

تم ترخيص PostgreSQL تحت رخصة مشتقة من رخصة BSD ، والتي تعني أنه يمكن أن تستخدم في التطبيقات المفتوحة المصدر والتجارية مجانا.[11]

مراجع[عدل]

  1. ^ أ ب ت ث ج ح وصلة مرجع: https://www.postgresql.org/download/.
  2. ^ وصلة مرجع: https://www.postgresql.org/docs/current/history.html.
  3. ^ وصلة مرجع: http://www.journaldunet.com/developpeur/itws/itw-postgresql-marcgfournier.shtml.
  4. ^ وصلة مرجع: https://github.com/postgres/postgres.
  5. ^ "The postgres Open Source Project on Open Hub: Languages Page". أهلوه. اطلع عليه بتاريخ 2018-10-19.
  6. ^ أ ب وصلة مرجع: https://www.postgresql.org/about/news/postgresql-16-rc1-released-2702/. تاريخ النشر: 31 أغسطس 2023.
  7. ^ أ ب "PostgreSQL 16.2, 15.6, 14.11, 13.14, and 12.18 Released!". 8 فبراير 2024.
  8. ^ وصلة مرجع: http://www.postgresql.org/download/. الوصول: 29 أغسطس 2020.
  9. ^ أ ب ت ث "PostgreSQL: About". www.postgresql.org (بالإنجليزية). Archived from the original on 2019-09-10. Retrieved 2017-10-15.
  10. ^ أ ب ت "ما هي PostgreSQL ؟ | وادي التقنية". itwadi.com. مؤرشف من الأصل في 2017-11-14. اطلع عليه بتاريخ 2017-10-15.
  11. ^ أ ب "PostgreSQL: License". www.postgresql.org (بالإنجليزية). Archived from the original on 2019-09-05. Retrieved 2017-10-15.
  12. ^ "The PostgreSQL Licence (PostgreSQL) | Open Source Initiative". opensource.org (بالإنجليزية). Archived from the original on 2019-10-01. Retrieved 2017-10-15.
  13. ^ "بوستجرس-كيو-ال الإصدارة 8.3 | وادي التقنية". itwadi.com. مؤرشف من الأصل في 2017-10-19. اطلع عليه بتاريخ 2017-10-15.
  14. ^ "صدور PostgreSQL 9.1 | وادي التقنية". itwadi.com. مؤرشف من الأصل في 2017-10-19. اطلع عليه بتاريخ 2017-10-15.
  15. ^ "صدور PostgreSQL 9.5 | وادي التقنية". itwadi.com. مؤرشف من الأصل في 2017-10-19. اطلع عليه بتاريخ 2017-10-15.
  16. ^ "صدور PostgreSQL 9.6 | وادي التقنية". itwadi.com. مؤرشف من الأصل في 2017-10-19. اطلع عليه بتاريخ 2017-10-15.
  17. ^ "صدور PostgreSQL 10 | وادي التقنية". itwadi.com. مؤرشف من الأصل في 2017-10-26. اطلع عليه بتاريخ 2017-10-15.
  18. ^ J.، Gilmore, W. (2006). Beginning PHP and PostgreSQL 8 : from novice to professional. Berkeley, CA: Apress. ISBN:1590595475. OCLC:262691321. مؤرشف من الأصل في 2019-12-14.{{استشهاد بكتاب}}: صيانة الاستشهاد: أسماء متعددة: قائمة المؤلفين (link)
  19. ^ "PostgreSQL: Feature Matrix". www.postgresql.org (بالإنجليزية). Archived from the original on 2019-09-05. Retrieved 2017-10-15.
  20. ^ "PostGIS : Home". postgis.refractions.net (بالإنجليزية). Archived from the original on 2019-09-05. Retrieved 2017-10-15.

وصلات خارجية[عدل]