العربية
  • postgresql
  • jsonb
  • json
  • database

إتقان نوع JSONB في PostgreSQL في مقال واحد

تعلم كيفية استخدام نوع JSONB في PostgreSQL لتخزين واستعلام ومعالجة بيانات JSON بكفاءة.

Yijun
Yijun
Developer

في تطوير التطبيقات الحديثة، أصبح التعامل مع البيانات غير المنظمة وتخزينها أمرًا شائعًا بشكل متزايد. يوفر نوع JSONB في PostgreSQL أداة قوية للمطورين لتخزين واستعلام بيانات JSON بكفاءة. في هذه المقالة، سوف نتعمق في مفهوم واستخدام نوع JSONB ونوضح ميزاته القوية من خلال أمثلة محددة على الكود.

ما هو JSONB؟

JSONB هو نوع بيانات في PostgreSQL يخزن بيانات JSON بتنسيق ثنائي. على عكس النوع العادي JSON، يعتبر JSONB أكثر كفاءة في الاستعلام والتلاعب. يدعم مجموعة غنية من المشغلين والدوال التي تبسط التعامل مع بيانات JSON. بالإضافة إلى ذلك، يدعم JSONB أنواعًا متعددة من الفهارس، بما في ذلك فهارس B-tree وHash وGIN وGiST، مما يعزز أداء الاستعلام بشكل أكبر.

إنشاء نوع JSONB

إنشاء جدول بنوع JSONB

أولاً، دعونا ننشئ جدولًا يحتوي على عمود JSONB. لنفترض أن لدينا جدول products لتخزين معلومات المنتجات، مع تفاصيل المنتج المخزنة باستخدام نوع JSONB.

إدخال بيانات JSONB

يمكننا إدخال بيانات JSON في حقل JSONB باستخدام جملة INSERT بسيطة.

استعلام عن بيانات JSONB

استخراج القيم من حقول JSONB

يمكننا استخدام المشغل ->> لاستخراج قيم النصوص من حقل JSONB. يوضح المثال التالي كيفية استخراج معلومات العلامة التجارية لأحد المنتجات.

استخراج القيم المتداخلة مع JSONB

يمكننا استخدام مجموعة من المشغلين -> و->> لاستخراج القيم المتداخلة في بنية JSON. يوضح المثال التالي كيفية استخراج معلومات المعالج لأحد المنتجات.

استخراج القيم باستخدام مسارات JSONB

باستخدام المشغل #>>، يمكننا استخراج القيم من مسارات محددة داخل بيانات JSON. يوضح المثال التالي كيفية استخراج معلومات التخزين.

استخدام المشغل @> للاستعلامات الاحتوائية

يحقق المشغل @> من ما إذا كان كائن JSONB يحتوي على كائن JSONB آخر. يوضح المثال التالي كيفية استعلام المنتجات لعلامة تجارية معينة.

تعديل بيانات JSONB

تحديث بيانات JSONB

يمكننا استخدام الدالة jsonb_set لتحديث بيانات JSONB. تقوم هذه الدالة بتحديث القيمة في المسار المحدد. يوضح المثال التالي كيفية تحديث معلومات التخزين لأحد المنتجات.

حذف الحقول العلوية في بيانات JSONB

يمكننا استخدام المشغل - لإزالة الحقول العلوية من بيانات JSONB. يحذف هذا المشغل المفتاح المحدد من كائن JSONB. يوضح المثال التالي كيفية إزالة حقل علوي من تفاصيل المنتج.

حذف الحقول المتداخلة في JSONB

يمكننا استخدام المشغل #- لإزالة عناصر مسار محددة من بيانات JSONB. يحذف هذا المشغل المفتاح في المسار المحدد. يوضح المثال التالي كيفية حذف معلومات المعالج من مواصفات المنتج.

استعلامات متقدمة لـ JSONB

استخدام مصفوفات JSONB

يمكن أن تتضمن بيانات JSONB مصفوفات، ويمكننا استخدام المشغلين المتعلقين بالمصفوفات للتعامل مع هذه البيانات. يوضح المثال التالي كيفية تخزين واستعلام عن المنتجات بمؤشراتها المتعددة.

في المثال أعلاه، يمكنك أيضًا استخدام المشغل ? للتحقق مما إذا كانت مصفوفة JSONB تحتوي على عنصر معين:

دمج بيانات JSONB

يمكننا استخدام المشغل || لدمج كائنين من JSONB. يمزج هذا المشغل بين كائنين JSONB في واحد. يوضح المثال التالي كيفية دمج مواصفات جديدة في تفاصيل المنتج الحالية.

تجميع بيانات JSONB

يمكننا استخدام دوال التجميع لمعالجة بيانات JSONB، مثل عد عدد المنتجات لكل علامة تجارية.

تحسين الفهرسة والأداء لـ JSONB

لتحسين أداء الاستعلام باستخدام بيانات JSONB، يمكننا إنشاء فهارس على مفاتيح محددة داخل حقل JSONB. يعد اختيار النوع المناسب من الفهارس أمرًا حاسمًا لاحتياجات الاستعلام المختلفة.

  • فهرس GIN: مناسب للاستعلامات المعقدة التي تشمل البيانات متعددة القيم، المصفوفات، والبحث النصي الكامل.
  • فهرس B-tree: مناسب لاستعلامات بسيطة لمفتاح-قيمة، استعلامات النطاق، وعمليات الترتيب.

يمكن أن يعزز تحديد الفهارس وإنشاؤها بشكل صحيح بشكل كبير أداء استعلامات بيانات JSONB.

إنشاء فهرس GIN

تعد الفهارس GIN مثالية لتسريع الاستعلامات التي تشمل البيانات متعددة القيم والمصفوفات. على سبيل المثال، يمكننا إنشاء فهرس GIN لمصفوفة tags المذكورة سابقًا لتسريع الاستعلامات على عناصر المصفوفة.

إنشاء فهرس B-tree

للاستعلامات البسيطة لمفتاح-قيمة، يمكن أن يحسن فهرس B-tree الأداء بشكل كبير. تعتبر فهارس B-tree مناسبة لاستعلامات النطاق وعمليات الترتيب. يوضح المثال التالي كيفية إنشاء فهرس B-tree للمفتاح model في الحقل details

الخلاصة

يوفر نوع JSONB في PostgreSQL حلاً قويًا ومرنًا للتعامل مع بيانات JSON. مع المقدمة والأمثلة في هذه المقالة، يجب أن يكون لديك الآن فهم شامل لكيفية استخدام نوع JSONB. من خلال إتقان هذه التقنيات، يمكنك التعامل مع البيانات غير المنظمة واستعلامها بكفاءة، مما يعزز أداء ومرونة تطبيقاتك.