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

من ويكيبيديا، الموسوعة الحرة
اذهب إلى: تصفح، ‏ ابحث
بوستجري إس كيو إل
الشعار الرسمي لبوستجرس


الإصدار المستقر 9.3.2,
9.1.9,
9.0.13,
8.4.17
إصدار تجريبي 9.3rc1[1] / 22 أغسطس 2013؛ منذ 4 سنين (2013-08-22)
لغة البرمجة سي
نظام التشغيل متعدد المنصات  تعديل قيمة خاصية نظام التشغيل (P306) في ويكي بيانات
متوفر بلغات الإنجليزية
نوع نظام إدارة قواعد البيانات علائقي
الرخصة رخصة بوستجرسكل
موقع الويب http://www.postgresql.org


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

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

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

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

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

* الصفوف المجمعة (HOT), والتي تزيل ما يصل إلى ثلاث أرباع الصيانة اللازمة للجداول التي يتم تحديثها باستمرار.

* نقاط التفريغ الموزعة حسب العبء، حيث يقل نشاط نقاط التفريغ خلال ذروة الأعباء.

* ضبط ذاتي وآلي لعملية الكتابة في الخلفية.

* خيار التنفيذ غير التزامني يضمن سرعة استجابة أعلى في بعض الإجراءات. هذه التغييرات تسرع أيضاً من سعة معالجة المعاملات، ما بين 5% و 30%، حسب حجم النشاط[6].

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

* النسخ المتماثل المتزامن Synchronous Replication : حيث يضمن أن البيانات موجودة على عدة خوادم في حالة انهيار الخادم الرئيسي ، قد يسبب هذا التزامن بطئ في الأداء ولكن يضمن أن البيانات لن تفقد.

* الفرز على مستوى الأعمدة : حيث تم دعم الفرز اللغوي الصحيح على مستوى قاعدة البيانات ككل و الجدول و لأعمدة.

* الجداول غير المسجلة : حيث تقدم تحسن في الأداء كثير للبيانات سريعة الزوال.

* مؤشر القرب K-Nearest-Neighbor Indexing : حيث يقوم هذا المؤشر بإعطاء المسافة ، مما يسرع استعلامات المواقع و البحث في النصوص.

* تسلسل عزل اللقطات Serializable Snapshot Isolation : حيث يحافظ على اتساق المعاملات المتزامنة بدون المنع ؛ وذلك باستخدام ما يعرف باسم "true serializability"

* عبارات جدول عامة قابلة للكتابة Writeable Common Table Expressions : حيث يمكن بواسطتها تنفيذ تحديث بيانات معقدة متعددة المراحل باستخدام استعلام مفرد.

* الأمان المحسن: حيث يمكن نشر نظام أمني مثل المستوى الأمني العسكري ، و التحكم في الوصول الإلزامي[7].

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

حيث تتميز بوستجرسكل أنه لا حدود لحجم قواعد بياناتها، وأن أعلى قيمة لحجم الجدول هو ٣٢ تيرابايت و أعلى حجم للصف الواحد هو ١.٦ تيربايات، وأعلى حجم لحقل واحد هو واحد جيجا، وأنه لا حدود لعدد الصفوف في الجدول الواحد وأقصى عدد للأعمدة في الجدول الواحد ما بين ٢٥٠ إلى ١٦٠٠ على حسب نوع العمود[2].

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

References[عدل]

  1. ^ "PostgreSQL 9.3 RC1 Available for Testing". PostgreSQL. The PostgreSQL Global Development Group. 22 August 2013. اطلع عليه بتاريخ 23 August 2013. 
  2. ^ أ ب ت ث "PostgreSQL: About". www.postgresql.org (باللغة الإنجليزية). اطلع عليه بتاريخ 2017-10-15. 
  3. ^ أ ب ت "ما هي PostgreSQL ؟ | وادي التقنية". itwadi.com. اطلع عليه بتاريخ 2017-10-15. 
  4. ^ أ ب "PostgreSQL: License". www.postgresql.org (باللغة الإنجليزية). اطلع عليه بتاريخ 2017-10-15. 
  5. ^ "The PostgreSQL Licence (PostgreSQL) | Open Source Initiative". opensource.org (باللغة الإنجليزية). اطلع عليه بتاريخ 2017-10-15. 
  6. ^ "بوستجرس-كيو-ال الإصدارة 8.3 | وادي التقنية". itwadi.com. اطلع عليه بتاريخ 2017-10-15. 
  7. ^ "صدور PostgreSQL 9.1 | وادي التقنية". itwadi.com. اطلع عليه بتاريخ 2017-10-15. 
  8. ^ "صدور PostgreSQL 9.5 | وادي التقنية". itwadi.com. اطلع عليه بتاريخ 2017-10-15. 
  9. ^ "صدور PostgreSQL 9.6 | وادي التقنية". itwadi.com. اطلع عليه بتاريخ 2017-10-15. 
  10. ^ "صدور PostgreSQL 10 | وادي التقنية". itwadi.com. اطلع عليه بتاريخ 2017-10-15. 
  11. ^ J.، Gilmore, W. (2006). Beginning PHP and PostgreSQL 8 : from novice to professional. Berkeley, CA: Apress. ISBN 1590595475. OCLC 262691321. 
  12. ^ "PostgreSQL: Feature Matrix". www.postgresql.org (باللغة الإنجليزية). اطلع عليه بتاريخ 2017-10-15. 
  13. ^ "PostGIS : Home". postgis.refractions.net (باللغة الإنجليزية). اطلع عليه بتاريخ 2017-10-15.