برنامه نویسی

همکاری با JSON در PostgreSQL ، MySQL و SQL Server

  همکاری با JSON در PostgreSQL ، MySQL و SQL Server

همکاری با JSON در PostgreSQL ، MySQL و SQL Server

“داده های شما همیشه مسطح نیست – نمایش داده شدگان شما نیز نباید باشند.”

پایگاه داده های SQL برای پشتیبانی تکامل یافته اند داده های نیمه ساختار یافته، به خصوص JSON ، در کنار مدل های رابطه ای سنتی. این رویکرد ترکیبی به شما امکان می دهد:

  • داده های غنی از تو در تو را ذخیره کنید
  • با طرح های در حال تحول سازگار شوید
  • با هم به داده های ساخت یافته و انعطاف پذیر بپیوندید

در این مقاله ، ما پوشش خواهیم داد:

  • انواع ستون JSON
  • پرس و جو ساختارهای تو در تو
  • نمایه سازی برای عملکرد
  • نمونه های داده های متقابل در سرور PostgresQL ، MySQL و SQL

ستونهای JSON را تعریف کنید

postgresql:

CREATE TABLE users (
  id SERIAL PRIMARY KEY,
  profile JSONB
);
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

mysql:

CREATE TABLE users (
  id INT AUTO_INCREMENT PRIMARY KEY,
  profile JSON
);
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

سرور SQL:

CREATE TABLE users (
  id INT IDENTITY PRIMARY KEY,
  profile NVARCHAR(MAX) -- must be valid JSON
);
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید


استخراج مقادیر JSON

postgresql:

-- Extract scalar field
SELECT profile->>'name' AS name FROM users;

-- Extract nested object
SELECT profile->'address'->>'city' AS city FROM users;
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

mysql:

-- Extract with JSON_EXTRACT
SELECT JSON_UNQUOTE(JSON_EXTRACT(profile, '$.name')) AS name FROM users;

-- Nested access
SELECT JSON_UNQUOTE(JSON_EXTRACT(profile, '$.address.city')) AS city FROM users;
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

سرور SQL:

-- Extract scalar field
SELECT JSON_VALUE(profile, '$.name') AS name FROM users;

-- Extract nested object
SELECT JSON_VALUE(profile, '$.address.city') AS city FROM users;
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید


کل اشیاء JSON را ذخیره و بازیابی کنید

درج کامل شیء:

INSERT INTO users (profile)
VALUES ('{"name": "Ada", "skills": ["SQL", "Python"]}');
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

پرس و جو مورد کامل:

SELECT profile FROM users;
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید


در جایی که بندها از JSON استفاده کنید

-- Get users with SQL skill
-- PostgreSQL
SELECT * FROM users WHERE profile->'skills' ? 'SQL';

-- MySQL
SELECT * FROM users WHERE JSON_CONTAINS(profile->'$.skills', '"SQL"');

-- SQL Server
SELECT * FROM users WHERE JSON_QUERY(profile, '$.skills') LIKE '%SQL%';
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید


نمایه سازی داده های JSON

postgresql (فقط JSONB):

-- Index top-level key
CREATE INDEX idx_profile_name ON users ((profile->>'name'));

-- Full GIN index
CREATE INDEX idx_profile_json ON users USING GIN (profile);
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

mysql:

-- Generated column (MySQL 5.7+)
ALTER TABLE users ADD name_gen VARCHAR(255) GENERATED ALWAYS AS (JSON_UNQUOTE(JSON_EXTRACT(profile, '$.name'))) STORED;
CREATE INDEX idx_name_gen ON users(name_gen);
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

سرور SQL:

-- Create computed column
ALTER TABLE users ADD name AS JSON_VALUE(profile, '$.name');
CREATE INDEX idx_name ON users(name);
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

actives دسترسی به فهرست شده باعث افزایش عملکرد در محل و پیوستن به بندها می شود.


خروجی JSON از SQL

postgresql:

SELECT jsonb_build_object('id', id, 'profile', profile) FROM users;
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

سرور SQL:

SELECT id, profile FROM users FOR JSON PATH;
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

mysql:

SELECT JSON_OBJECT('id', id, 'profile', profile) FROM users;
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید


از مواردی برای JSON در SQL استفاده کنید

  • پروفایل کاربر پویا
  • سیاهههای مربوط به رویداد
  • بارهای سنسور IoT
  • حباب های پیکربندی
  • ادغام با API

افکار نهایی: JSON فقط برای NOSQL نیست

با پشتیبانی مدرن JSON ، پایگاه داده های SQL به شما امکان می دهد:

  • انعطاف پذیر باشید
  • داده های تو در تو یا پراکنده
  • از Power SQL در اطلاعات نیمه ساختار یافته استفاده کنید

“بهترین های هر دو جهان: JSON با قابلیت اطمینان SQL.”

#SQL #JSON #POSTGRESQL #MYSQL #SQLSERVER #SEMISTRUCTURUD

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا