ملحقات PostgreSQL الرسمية
تُعد ServBay بيئة تطوير ويب محلية قوية متكاملة تحتوي على العديد من أدوات المطورين، من ضمنها قاعدة بيانات PostgreSQL ذات الإمكانيات العالية. لا تقتصر قوة PostgreSQL على وظائفها الأساسية فقط، بل تمتد إلى مجتمعها الضخم وما توفره من ملحقات رسمية متنوعة. قامت ServBay مسبقًا بتضمين أغلب ملحقات PostgreSQL الرسمية، بحيث يمكن للمطورين تفعيل هذه الملحقات واستخدامها محليًا بسهولة، مما يوسع إمكانات قاعدة البيانات ويلبّي متطلبات المشاريع والتطبيقات المعقدة.
يستعرض هذا الدليل بعض الملحقات الرسمية شائعة الاستخدام في PostgreSQL، ويوضح كيفية تثبيتها واستخدامها ضمن بيئةServBay.
نظرة عامة على أشهر الملحقات
تقدم PostgreSQL حزمة كبيرة من الملحقات الرسمية لتغطية مجالات عديدة؛ من مراقبة الأداء، إلى دعم أنواع بيانات متقدمة، وبحث نصي كامل وغيرها. فيما يلي أهم الملحقات التي قد يحتاجها المطورون في أعمالهم اليومية:
1. pg_stat_statements
- الوظيفة: جمع وتسجيل إحصائيات عن جميع أوامر SQL المنفذة في الخادم، مثل عدد مرات الاستدعاء، وإجمالي وقت التنفيذ، وعدد الصفوف المعالجة، وغير ذلك.
- الاستخدام: تساعد مسؤولي قواعد البيانات والمطورين على تحليل أداء الاستعلامات، وتحديد الاستعلامات البطيئة واختناقات الأداء.
- أمر التثبيت:sqlملاحظة: بعد التثبيت، غالبًا ما يجب تكوين
CREATE EXTENSION pg_stat_statements;
1shared_preload_libraries = 'pg_stat_statements'
في ملفpostgresql.conf
ثم إعادة تشغيل خدمة PostgreSQL للتفعيل الكامل وجمع البيانات. تقدّم ServBay طريقة سهلة لتعديل الإعدادات.
2. pg_trgm
- الوظيفة: توفير دوال ومؤشرات لدعم قياس تشابه النصوص بالاعتماد على ثلاثيات الحروف (trigrams).
- الاستخدام: مثالي لتنفيذ البحث التقريبي والتعامل مع مطابقة النصوص رغم وجود أخطاء إملائية أو اختلافات بسيطة.
- أمر التثبيت:sql
CREATE EXTENSION pg_trgm;
1
3. hstore
- الوظيفة: توفير نوع بيانات يسمح بتخزين أزواج المفاتيح والقيم داخل قيمة واحدة في قاعدة PostgreSQL.
- الاستخدام: مفيد لتخزين البيانات الديناميكية أو شبه المهيكلة مثل بيانات التفضيلات أو الإعدادات دون الحاجة لهيكل جدول ثابت.
- أمر التثبيت:sql
CREATE EXTENSION hstore;
1
4. citext
- الوظيفة: نوع بيانات يدعم النصوص غير الحساسة لحالة الأحرف (Case insensitive).
- الاستخدام: مثالي في تخزين ومقارنة أسماء المستخدمين أو عناوين البريد أو العلامات بدون الحاجة لاستخدام دالة
LOWER()
باستمرار. - أمر التثبيت:sql
CREATE EXTENSION citext;
1
5. uuid-ossp
- الوظيفة: توفير دوال لإنشاء معرّفات فريدة عالمياً (UUID) تدعم عدة إصدارات من UUID.
- الاستخدام: إنشاء معرّفات فريدة تُستخدم كمفاتيح أو معرفات للجلسات أو في الأنظمة الموزعة.
- أمر التثبيت:sqlملاحظة: يتضمّن اسم الإضافة شرطة، لذا يجب وضع اسم الامتداد بين علامات اقتباس مزدوجة.
CREATE EXTENSION "uuid-ossp";
1
6. intarray
- الوظيفة: توفير دوال وعمليات إضافية للتعامل مع مصفوفات الأعداد الصحيحة.
- الاستخدام: يلائم السيناريوهات التي تتطلب عمليات متقدمة أو تجميعية مباشرة على مصفوفات الأرقام داخل قاعدة البيانات.
- أمر التثبيت:sql
CREATE EXTENSION intarray;
1
7. btree_gin
- الوظيفة: دعم عمليات الفهرسة باستخدام GIN (الفهرسة المعكوسة العامة) لأنواع بيانات B-tree مثل الأعداد والنصوص والتواريخ.
- الاستخدام: مفيد في فهرسة الحقول التي تحتوي على عدة قيم (مثل المصفوفات أو hstore)، مما يُحسن أداء الاستعلامات عبر GIN مع عناصر يمكن فهرستها باستخدام B-tree.
- أمر التثبيت:sql
CREATE EXTENSION btree_gin;
1
8. btree_gist
- الوظيفة: دعم الفهرسة باستخدام GiST (شجرة البحث العامة) لأنواع بيانات B-tree.
- الاستخدام: يسمح باستخدام GiST لفهرسة البيانات القابلة للفهرسة بـB-tree، وهو ملائم للبحث المتنوع (النطاق، الاحتواء...) أو الفهرسة عبر أعمدة متعددة.
- أمر التثبيت:sql
CREATE EXTENSION btree_gist;
1
9. cube
- الوظيفة: توفير نوع بيانات لتمثيل المكعبات أو النقاط متعددة الأبعاد، مع دوال وعمليات متقدمة.
- الاستخدام: مثالي لتخزين وتحليل بيانات متعددة الأبعاد، مثل بيانات جغرافية أو التحليلية.
- أمر التثبيت:sql
CREATE EXTENSION cube;
1
10. fuzzystrmatch
- الوظيفة: توفير دوال متنوعة لقياس التشابه والمسافة بين النصوص مثل مسافة Levenshtein وSoundex وMetaphone وغيرها.
- الاستخدام: يستعمل في المقارنة التقريبية للنصوص، التصحيح الإملائي، وتنظيف البيانات وإزالة التكرارات.
- أمر التثبيت:sql
CREATE EXTENSION fuzzystrmatch;
1
11. plpgsql
- الوظيفة: لغة البرمجة الإجرائية الافتراضية في PostgreSQL لتعريف الدوال المخزنة والمشغلات.
- الاستخدام: تنفيذ منطق أعمال متقدم أو مهام مؤتمتة على مستوى الخادم. غالبًا ما تكون مثبّتة مسبقًا، لكن يمكن التأكد من وجودها أو إعادة تثبيتها بواسطة الأمر التالي:
- أمر التثبيت:sql
CREATE EXTENSION plpgsql;
1
12. tablefunc
- الوظيفة: دوال للتعامل مع البيانات الجدولية وتحويلها، مثل دالة
crosstab
الشهيرة. - الاستخدام: تنفيذ الاستعلامات الجدولية (Pivot)، وتحويل تصنيفات الأعمدة لصفوف، مثالي للتقارير وتحليل البيانات.
- أمر التثبيت:sql
CREATE EXTENSION tablefunc;
1
13. dblink
- الوظيفة: تمكين الاتصال بقواعد بيانات PostgreSQL أخرى من داخل قاعدة البيانات الحالية وتنفيذ الاستعلامات.
- الاستخدام: مناسب للاستعلام أو نقل البيانات بين قواعد بيانات مختلفة دون الحاجة لمعالجة الربط عبر التطبيق.
- أمر التثبيت:sql
CREATE EXTENSION dblink;
1
14. postgres_fdw
- الوظيفة: موصل بيانات خارجي (FDW) لتصفح جداول قواعد PostgreSQL خارجية كما لو كانت جداول محلية.
- الاستخدام: يتيح التكامل بين قواعد البيانات المتعددة وتنفيذ الاستعلامات الموحدة، مع دعم أقوى من dblink.
- أمر التثبيت:sql
CREATE EXTENSION postgres_fdw;
1
15. pgcrypto
- الوظيفة: يتضمن دوال متنوعة للتشفير وفك التشفير، والهاش، والتشفير المتماثل وغير المتماثل.
- الاستخدام: تنفيذ التشفير، وتخزين كلمات المرور بشكل آمن، والتحقق من التواقيع الرقمية متضمناً الأمان على مستوى قاعدة البيانات.
- أمر التثبيت:sql
CREATE EXTENSION pgcrypto;
1
هذه قائمة مختصرة لأهم ملحقات PostgreSQL المضمنة عبر ServBay، وتلتزم ServBay بتوفير معظم ملحقات المجتمع الرسمية لتلبية احتياجات المطورين المتنوعة.
كيفية تثبيت واستخدام ملحقات PostgreSQL في ServBay
إن تثبيت واستخدام الملحقات في بيئة ServBay بسيط للغاية. يتم تثبيت الملحقات على قاعدة بيانات محددة، مما يعني أنك بحاجة إلى تفعيل كل ملحق في قواعد البيانات التي تحتاجه فقط.
المتطلبات السابقة:
- تأكد من تشغيل ServBay، وأن خدمة PostgreSQL فعّالة.
خطوات التشغيل:
الاتصال بقاعدة البيانات المطلوبة: افتح تطبيق الطرفية (على سبيل المثال Terminal أو iTerm2 في macOS)، واستخدم أداة السطر
psql
للاتصال بقاعدة البيانات التي تريد تثبيت الملحق عليها. بشكل افتراضي، اسم المستخدم في PostgreSQL على ServBay هوpostgres
واسم القاعدة الافتراضي هوpostgres
.bashpsql -U your_username -d your_database
1مثال للاتصال بقاعدة البيانات الافتراضية:
bashpsql -U postgres -d postgres
1إذا طُلب منك إدخال كلمة مرور، أدخل كلمة مرور مستخدم root/postgres المضبوطة في ServBay لقاعدة PostgreSQL.
تثبيت الملحق: بعد الاتصال بنجاح، ستظهر واجهة سطر أوامر psql. قم بتنفيذ أمر
CREATE EXTENSION
لتثبيت الملحق المطلوب. استبدلmodule_name
باسم الملحق الذي تريد تثبيته.sqlCREATE EXTENSION module_name;
1مثال على تثبيت ملحق
pg_trgm
:sqlCREATE EXTENSION pg_trgm;
1التحقق من التثبيت: عقب التثبيت، يمكنك عرض قائمة الملحقات المثبتة على القاعدة عبر أمر
\dx
للتأكد من نجاح التثبيت:sql\dx
1
مثال: تفعيل ملحق pg_trgm
فيما يلي تفاعل كامل في سطر الأوامر لتفعيل الملحق pg_trgm
على قاعدة postgres
:
# لتنفيذ الاتصال بقاعدة البيانات عبر الطرفية
psql -U postgres -d postgres
# بعد الاتصال ستظهر نافذة psql
psql (16.3 (ServBay))
Type "help" for help.
postgres=# -- عرض الملحقات الحالية (مثل plpgsql وpgcrypto)
postgres=# \dx
List of installed extensions
Name | Version | Schema | Description
----------+---------+------------+------------------------------
pgcrypto | 1.3 | public | cryptographic functions
plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language
(2 rows)
postgres=# -- تثبيت ملحق pg_trgm
postgres=# CREATE EXTENSION pg_trgm;
CREATE EXTENSION
postgres=# -- إعادة عرض قائمة الملحقات للتأكد من إضافة pg_trgm
postgres=# \dx
List of installed extensions
Name | Version | Schema | Description
----------+---------+------------+-------------------------------------------------------------------
pg_trgm | 1.6 | public | text similarity measurement and index searching based on trigrams
pgcrypto | 1.3 | public | cryptographic functions
plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language
(3 rows)
postgres=# -- أصبح بإمكانك استخدام دوال وعمليات pg_trgm الآن في القاعدة
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
استعراض الملحقات المتوفرة مع PostgreSQL في ServBay
قبل تثبيت أي ملحق، من المفيد معرفة جميع الملحقات المتاحة في إصدار PostgreSQL ضمن ServBay، لاكتشاف إمكانيات إضافية.
بإمكانك تنفيذ الاستعلام التالي من داخل أي قاعدة بيانات PostgreSQL لاستعراض جميع الملحقات المتوفرة:
SELECT * FROM pg_available_extensions ORDER BY name;
ستحصل على جدول يتضمن بيانات جميع الملحقات التي يدعمها إصدار PostgreSQL المدمج ضمن ServBay، مع الاسم والإصدار والوصف وحالة التثبيت في قاعدة البيانات الحالية.
مثال نموذجي على النتائج (قد تختلف القائمة بحسب إصدار ServBay أو PostgreSQL):
name | default_version | installed_version | comment
------------------------------+-----------------+-------------------+---------------------------------------------------------------------------------------------------------------------
address_standardizer | 3.4.2 | | Used to parse an address into constituent elements. Generally used to support geocoding address normalization step.
address_standardizer_data_us | 3.4.2 | | Address Standardizer US dataset example
adminpack | 2.1 | | administrative functions for PostgreSQL
amcheck | 1.3 | | functions for verifying relation integrity
autoinc | 1.0 | | functions for autoincrementing fields
bloom | 1.0 | | bloom access method - signature file based index
btree_gin | 1.3 | | support for indexing common datatypes in GIN
btree_gist | 1.7 | | support for indexing common datatypes in GiST
citext | 1.6 | | data type for case-insensitive character strings
cube | 1.5 | | data type for multidimensional cubes
dblink | 1.2 | | connect to other PostgreSQL databases from within a database
dict_int | 1.0 | | text search dictionary template for integers
dict_xsyn | 1.0 | | text search dictionary template for extended synonym processing
earthdistance | 1.1 | | calculate great-circle distances on the surface of the Earth
file_fdw | 1.0 | | foreign-data wrapper for flat file access
fuzzystrmatch | 1.2 | | determine similarities and distance between strings
hstore | 1.8 | | data type for storing sets of (key, value) pairs
insert_username | 1.0 | | functions for tracking who changed a table
intagg | 1.1 | | integer aggregator and enumerator (obsolete)
intarray | 1.5 | | functions, operators, and index support for 1-D arrays of integers
isn | 1.2 | | data types for international product numbering standards
lo | 1.1 | | Large Object maintenance
ltree | 1.2 | | data type for hierarchical tree-like structures
moddatetime | 1.0 | | functions for tracking last modification time
old_snapshot | 1.0 | | utilities in support of old_snapshot_threshold
pageinspect | 1.12 | | inspect the contents of database pages at a low level
pg_buffercache | 1.4 | | examine the shared buffer cache
pg_freespacemap | 1.2 | | examine the free space map (FSM)
pg_jieba | 1.1.1 | | a parser for full-text search of Chinese
pg_prewarm | 1.2 | | prewarm relation data
pg_stat_statements | 1.10 | | track planning and execution statistics of all SQL statements executed
pg_surgery | 1.0 | | extension to perform surgery on a damaged relation
pg_trgm | 1.6 | 1.6 | text similarity measurement and index searching based on trigrams
pg_visibility | 1.2 | | examine the visibility map (VM) and page-level visibility info
pg_walinspect | 1.1 | | functions to inspect contents of PostgreSQL Write-Ahead Log
pgcrypto | 1.3 | 1.3 | cryptographic functions
pgrouting | 3.6.2 | | pgRouting Extension
pgrowlocks | 1.2 | | show row-level locking information
pgstattuple | 1.5 | | show tuple-level statistics
plpgsql | 1.0 | 1.0 | PL/pgSQL procedural language
postgis | 3.4.2 | | PostGIS geometry and geography spatial types and functions
postgis_sfcgal | 3.4.2 | | PostGIS SFCGAL functions
postgis_tiger_geocoder | 3.4.2 | | PostGIS tiger geocoder and reverse geocoder
postgres_fdw | 1.1 | | foreign-data wrapper for remote PostgreSQL servers
refint | 1.0 | | functions for implementing referential integrity (obsolete)
seg | 1.4 | | data type for representing line segments or floating-point intervals
sslinfo | 1.2 | | information about SSL certificates
tablefunc | 1.0 | | functions that manipulate whole tables, including crosstab
tcn | 1.0 | | Triggered change notifications
tsm_system_rows | 1.0 | | TABLESAMPLE method which accepts number of rows as a limit
tsm_system_time | 1.0 | | TABLESAMPLE method which accepts time in milliseconds as a limit
unaccent | 1.1 | | text search dictionary that removes accents
vector | 0.7.0 | | vector data type and ivfflat and hnsw access methods
xml2 | 1.1 | | XPath querying and XSLT
zhparser | 2.2 | | a parser for full-text search of Chinese
(55 rows)
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
يرجى الانتباه: هذا المثال توضيحي فقط. قد تختلف قائمة الملحقات والإصدارات بحسب تحديثات ServBay أو PostgreSQL لديك.
الخلاصة
من خلال تضمين ServBay للعديد من ملحقات PostgreSQL الرسمية مسبقًا، أصبح بمقدور المطورين استغلال هذه الميزات المتقدمة بسهولة ضمن بيئة التطوير المحلية دون الحاجة لتجميع أو تثبيت يدوي. فقط ببعض أوامر SQL يمكن تفعيل أي ملحق تحتاجه للتركيز على تطوير تطبيقك وزيادة الإنتاجية. هذه الملحقات تتيح لك في دقائق إضافة وظائف متقدمة مثل مراقبة الأداء، والبحث الكامل، والأمان، وغير ذلك إلى مشروعك.