1. المقدمة
1.1 أهمية JSON
في تطوير الويب الحديث، أصبح تبادل البيانات أكثر تعقيدًا. يُعد JSON (JavaScript Object Notation) تنسيقًا خفيفًا ومُهيكلًا للبيانات، ويُستخدم على نطاق واسع لنقل وتخزين البيانات. منذ الإصدار 5.7، يدعم MySQL نوع البيانات JSON، مما يجعل من السهل تخزين ومعالجة بيانات JSON مباشرةً في قاعدة البيانات.
1.2 استخدام JSON في MySQL
تشرح هذه المقالة كل شيء بدءًا من الأساسيات للعمل مع JSON في MySQL إلى اعتبارات الأداء وحالات الاستخدام العملية. سواء كنت مبتدئًا أو مستخدمًا متقدمًا، ستحصل على المعرفة اللازمة لاستخدام JSON بفعالية في MySQL.
2. ما هو JSON في MySQL؟
2.1 أساسيات JSON
JSON هو تنسيق بسيط يُنظم البيانات كأزواج مفتاح‑قيمة. يُستخدم على نطاق واسع في واجهات برمجة التطبيقات (APIs) ونقل البيانات، ويُعرف بخفته وسهولة قراءته. في MySQL، يسمح نوع البيانات JSON بتخزين ومعالجة بيانات JSON مباشرةً في قاعدة البيانات.
2.2 نوع بيانات JSON في MySQL
نوع البيانات JSON، الذي تم تقديمه في MySQL 5.7، يتطلب مساحة قرص مماثلة لـ LONGBLOB أو LONGTEXT. لضمان سلامة البيانات، يتحقق MySQL من صحة بيانات JSON عند الإدخال، مما يمنع تخزين JSON غير صالح.
2.3 حالات الاستخدام لـ JSON
تشمل السيناريوهات الشائعة لاستخدام JSON في MySQL:
- تخزين هياكل بيانات معقدة
- حفظ البيانات الخام المسترجعة من واجهات برمجة التطبيقات
- إدارة البيانات ذات المخططات الديناميكية أو المتطورة

3. عمليات JSON الأساسية في MySQL
3.1 إنشاء أعمدة JSON
لإنشاء عمود لتخزين بيانات JSON، حدد نوع البيانات json كما يلي:
CREATE TABLE json_data (
doc JSON
);
3.2 إدخال بيانات JSON
لإدخال بيانات JSON، استخدم جملة INSERT. يتحقق MySQL من صحة تنسيق البيانات عند الإدخال ويعيد خطأ إذا لم يكن JSON صالحًا.
INSERT INTO json_data(doc) VALUES ('{"a": {"b": ["c", "d"]}, "e": "f"}');
يمكنك أيضًا إنشاء كائن JSON من أزواج مفتاح‑قيمة باستخدام الدالة JSON_OBJECT:
INSERT INTO json_data(doc) VALUES (JSON_OBJECT('key1', 'value1', 'key2', 'value2'));
3.3 استعلام بيانات JSON
لاستعلام بيانات JSON المدخلة، استخدم الدالة JSON_EXTRACT. تقوم هذه الدالة باستخراج القيم من كائن JSON باستخدام مسار محدد.
SELECT * FROM json_data WHERE JSON_EXTRACT(doc, '$.e') = 'f';
بدلاً من ذلك، يمكنك استخدام عامل الاختصار ->:
SELECT * FROM json_data WHERE doc->'$.e' = 'f';
3.4 تحديث بيانات JSON
لتحديث أجزاء من كائن JSON، استخدم الدالة JSON_SET. تقوم هذه الدالة بتحديث حقول محددة دون استبدال الكائن بالكامل.
UPDATE json_data SET doc = JSON_SET(doc, '$.a.b[0]', 'new_value');
4. اعتبارات الأداء
4.1 أداء الإدخال
عند إدخال البيانات في أعمدة JSON، يكون الأداء شبه مماثل لأداء الإدخال في أعمدة TEXT. على سبيل المثال، يُظهر إدخال 50,000 سجل أن JSON يحقق أداءً مقاربًا لـ TEXT من حيث السرعة.
4.2 أداء التحديث
عند تحديث بيانات JSON، تسمح JSON_SET بالتحديثات الجزئية، مما يحسن الأداء لأنك تعدل حقولًا محددة فقط بدلاً من استبدال الكائن بالكامل. حتى عند تحديث 50,000 سجل، توفر JSON_SET تحديثات فعّالة.

5. أفضل الممارسات لاستخدام JSON في MySQL
5.1 حالات الاستخدام المناسبة
يُعد JSON مناسبًا لتخزين هياكل بيانات معقدة أو بيانات ذات مخططات ديناميكية. ومع ذلك، بالنسبة للبيانات ذات البنية الجيدة، تكون الجداول العلائقية التقليدية عادةً أكثر كفاءة.
5.2 فهرسة بيانات JSON
في MySQL، يمكنك إنشاء فهارس على أعمدة JSON باستخدام الأعمدة الافتراضية (virtual columns). هذا يحسن أداء الاستعلامات على بيانات JSON.
ALTER TABLE json_data ADD COLUMN e_value VARCHAR(255) AS (doc->'$.e'), ADD INDEX (e_value);
5.3 تجنب الأخطاء الشائعة
- تجنّب الاستخدام المفرط لأعمدة JSON واستفد من قوة قواعد البيانات العلائقية.
- ضع فهارس مناسبة لضمان كفاءة الاستعلامات.
- احرص على عدم أن تصبح بيانات JSON كبيرة جدًا وقم بتطبيع البيانات عند الحاجة.
6. وظائف JSON المتقدمة في MySQL
6.1 وظائف JSON الإضافية
يوفر MySQL العديد من الدوال لمعالجة بيانات JSON. على سبيل المثال، JSON_APPEND يضيف عناصر جديدة، وJSON_REMOVE يحذف حقولًا محددة.
-- Add data
UPDATE json_data SET doc = JSON_APPEND(doc, '$.a.b', 'new_element');
-- إزالة البيانات
UPDATE json_data SET doc = JSON_REMOVE(doc, '$.a.b[0]');
6.2 الجمع مع دوال SQL
يمكن دمج دوال JSON مع دوال SQL التقليدية لبناء استعلامات أكثر تعقيدًا. على سبيل المثال، يمكنك استخدام بيانات JSON مع عبارات GROUP BY أو ORDER BY.
SELECT JSON_EXTRACT(doc, '$.e') AS e_value, COUNT(*) FROM json_data GROUP BY e_value;
7. الخاتمة
غطت هذه المقالة كل شيء من عمليات JSON الأساسية إلى الميزات المتقدمة في MySQL. من خلال الاستفادة من قدرات JSON في MySQL، يمكنك تبسيط تخزين وإدارة البيانات المعقدة. سيساعدك تطبيق رؤى الأداء وأفضل الممارسات على إدارة البيانات بشكل أكثر كفاءة.
