PostgreSQL / الأساسي: الأسس العلاقية / الدرس 1
خوادم PostgreSQL والجلسات والمخططات
حدد موضع الاستعلام داخل بنية PostgreSQL وحل أسماء الكائنات بوعي. ميز العنقود وقاعدة البيانات والمخطط والعميل قبل تشخيص SQL.
في هذه الصفحة
أهداف الدرس
- وصف حدود اتصال PostgreSQL.
- فحص الإصدار والهوية وقواعد البحث عن المخطط.
العنقود يجمع قواعد ولا يعني التوزيع
في إدارة PostgreSQL تعني كلمة العنقود مجموعة قواعد يديرها تثبيت خادم ودليل بيانات واحد، ولا تدل وحدها على عنقود توافر مرتفع. يتصل العميل بقاعدة واحدة تحوي مخططات تنظم الجداول والعروض والدوال. تشير الأسماء المؤهلة المعتادة إلى schema.table داخل القاعدة لا إلى كائنات عشوائية في قاعدة أخرى. موصل الويب وpsql عميلان لبروتوكول الخادم نفسه ولا يملكان الصفوف المخزنة. تخدم عملية خلفية مخصصة الاتصال العادي، وقد تستخدم الاستعلامات المتوازية عمالاً إضافيين؛ لذلك تعد الاتصالات المتزامنة قرار موارد لا حقاً غير محدود.
اقرأ بصمة الجلسة
يعرف الاستعلام إصدار الخادم والقاعدة وهوية التنفيذ. تحدد session_user عادة دور الدخول، وقد تتغير current_user عبر SET ROLE مصرح بها أو تنفيذ بصلاحية المعرف. توضح SHOW search_path مواضع حل الأسماء غير المؤهلة. تعتمد الأسماء على البيئة ولا نختلق نتائج مرصودة. الأمثلة تفسيرية وغير قابلة للتشغيل؛ لا يتصل المقرر بقاعدة تطبيق ولا يجهز خدمة.
SELECT version(), current_database(), session_user, current_user;
SHOW search_path;
توقع صف سياق وإعداد search_path منفصلاً. إصدار برنامج العميل لا يثبت إصدار الخادم البعيد.
البحث عن المخطط حد ثقة
المخطط نطاق أسماء وليس حد ملكية بذاته. تتبع الأسماء search_path مع قواعد خاصة لمخططات النظام والمؤقتة. لا تثق بمخطط يستطيع غير الموثوقين إنشاء كائنات فيه عند تنفيذ شيفرة مميزة. أهل الكائنات المهمة بمخطط التطبيق. تحول PostgreSQL الأسماء غير المقتبسة إلى حروف صغيرة، ويبقى الاسم المقتبس المختلط حساساً للحالة ويحتاج اقتباساً متسقاً. تقلل الأسماء الصغيرة البسيطة مفاجآت الاقتباس.
افحص الكائنات المرئية دون افتراض وجودها
يحصر الاستعلام تعريفات الجداول المرئية في مخطط quay_lab الاصطناعي. قد تعني النتيجة الفارغة غياب المخطط أو اختلاف الأسماء أو حجب الصلاحيات، ولا تثبت تعطل الخادم. تقدم information_schema عروضاً معيارية وتكشف pg_catalog تفاصيل خاصة بـ PostgreSQL. افحص تعريف العرض للإصدار الفعلي قبل بناء مراقبة تعتمد عموداً معيناً، خصوصاً عند ترقية إصدار رئيسي.
SELECT table_schema, table_name, table_type
FROM information_schema.tables
WHERE table_schema = 'quay_lab'
ORDER BY table_name;
الشكل المتوقع صف لكل جدول أو عرض مرئي. يعتمد المحتوى على عينة تدريب مجهزة صراحة.
افصل أوامر العميل عن SQL
يفسر psql أوامر الشرطة المائلة مثل \dt ولا يفسرها خادم SQL؛ لا يرسلها الموصل كعبارات عادية. كذلك GO فاصل لأدوات SQL Server وDELIMITER في MySQL ليست SQL في PostgreSQL. ترتبط المعاملات وربط القيم بعقد الموصل وإعداد الخادم. سجل العميل والقاعدة وما إذا كانت معاملة صريحة مفتوحة قبل تفسير الخطأ.
الأخطاء الشائعة وإصلاحها
relation does not exist (42P01)
- لماذا يحدث؟
- حُل الاسم في مخطط آخر أو اقتبس بحالة مختلفة.
- كيف تصلحه؟
- افحص القاعدة وsearch_path ثم أهل الاسم بالمخطط المطلوب.
- كيف تتجنب تكراره؟
- استخدم أسماء صغيرة مستقرة ومخططات صريحة في الترحيلات.
syntax error at or near "\" (42601)
- لماذا يحدث؟
- أُرسل أمر خاص بـ psql عبر موصل SQL.
- كيف تصلحه؟
- استخدم استعلامات الكتالوج أو التوجيه داخل psql.
- كيف تتجنب تكراره؟
- ميز أمثلة العميل عن عبارات الخادم.
يجيب كائن غير مقصود عن استعلام غير مؤهل
- لماذا يحدث؟
- يظهر مخطط غير متوقع أو قابل للكتابة في مسار البحث.
- كيف تصلحه؟
- حدد الكائن المحلول وصحح سياسة الأسماء المراجعة.
- كيف تتجنب تكراره؟
- أبعد مخططات الإنشاء غير الموثوقة عن البحث المميز.
اختبر فهمك
1. يثبت جهاز psql 18. ما الدليل على الخادم والقاعدة اللذين قبلا الاتصال؟
اعرض الحل المشروح
استخدم SELECT version(), current_database() في جلسة التدريب المصرح لها وسجل النتيجة منفصلة عن إصدار البرنامج المحلي. يستطيع العميل الاتصال بإصدار رئيسي آخر. أضف الهوية وsearch_path لتشخيص الأسماء، ولا تستنتج القاعدة من دليل إطلاق الأمر.
2. يحوي مخططان جدول parcels. كيف يحدد تقرير المصالحة الجدول المرجعي؟
اعرض الحل المشروح
استخدم الاسم المؤهل الموثق مثل quay_lab.parcels بدلاً من مسار خاص بالمستخدم. تحقق من القاعدة وتعريف الجدول قبل تفسير النتيجة. لا يصل اسم المخطط بقاعدة ثانية؛ صمم آلية مدعومة ومصرحاً بها إن لزم وصول بين قواعد.
أهم ما تعلمته
- القاعدة والمخطط والدور والعميل حدود سياق مختلفة.
- تجعل الأسماء والإعدادات المفحوصة التشخيص قابلاً للتكرار.