۲۹ شهریور ۱۴۰۳

Techboy

اخبار و اطلاعات روز تکنولوژی

JSONB در PostgreSQL امروز و فردا

PostgreSQL اولین DBMS رابطه ای بود که پشتیبانی JSON را معرفی کرد و قابلیت جستجوی فهرست JSONB آن منحصر به فرد است. بیشتر در راه است

PostgreSQL اولین DBMS رابطه ای بود که پشتیبانی JSON را معرفی کرد و قابلیت جستجوی فهرست JSONB آن منحصر به فرد است. بیشتر در راه است

ما می دانیم که داده ها نوآوری را هدایت می کند و تجربیات بهتری را برای مشتری ایجاد می کند. و ما می دانیم که امروزه شرکت ها تمایل دارند برای استفاده بهینه از داده های خود به انواع پایگاه داده ها و سرویس های مبتنی بر فضای ابری و فضایی متکی باشند. در این محیط گیج کننده، پذیرش یک پایگاه داده منبع باز خاص، PostgreSQL، بر اساس توانایی آن در مدیریت داده های ساختاریافته و بدون ساختار به سرعت در حال رشد است.

یک سیستم پایگاه داده رابطه‌ای یا SQL با بیش از ۳۰ سال سابقه توسعه فعال، PostgreSQL به دلیل قابلیت اطمینان، مجموعه ویژگی‌های قوی و عملکرد عالی مشهور است. JSON یک فرمت فایل و فرمت تبادل داده است که برنامه ها را قادر می سازد اسناد مبتنی بر متن را ذخیره و تجزیه و تحلیل کنند. به این ترتیب، JSON پایگاه های داده NoSQL را تقویت می کند. JSONB، یک نوع داده انحصاری برای PostgreSQL، تکامل یافته JSON است که داده‌های مبتنی بر متن را به صورت باینری ذخیره می‌کند و برنامه‌هایی را که به داده‌های بدون ساختار دسترسی دارند سریع‌تر و کارآمدتر می‌کند.

JSONB در حال حاضر محبوب‌ترین نوع داده پشتیبانی شده است که از Postgres استفاده می‌کند. از جمله مزایای آن یک طرح انعطاف پذیر برای کمک به کسب و کارها برای افزایش سریع پروژه های جدید و فشرده سازی برای کاهش هزینه های اضافی و افزایش عملکرد است. چنین ویژگی‌هایی به کسب‌وکارها این امکان را می‌دهد تا وظایف بیشتری را با استفاده از یک راه‌حل پایگاه داده واحد انجام دهند، نوآوری‌های بیشتری را سریع‌تر معرفی کنند و در عین حال منابع توسعه را حفظ کنند و فشار کمتری را بر تیم‌ها برای مدیریت امنیت برای چند برنامه کاربردی وارد کنند.

تاریخچه مختصری از آوردن JSON و JSONB به PostgreSQL

در سال ۲۰۰۰، هنگام کار بر روی Rambler.ru، یک پورتال بزرگ روسی، من و دیگران شروع به پیاده سازی آرایه های متن و جستجوی متن کامل در PostgreSQL کردیم. در سال ۲۰۰۳، ما HStore را برای ذخیره جفت های کلید-مقدار در قالب باینری پیاده سازی کردیم. این انعطاف پذیری طرحواره را فراهم کرد که به سرعت در بین کاربران محبوب شد. در سال ۲۰۰۶، این ویژگی ها به طور رسمی در PostgreSQL به عنوان یک برنامه افزودنی متعهد شدند.

در سال ۲۰۱۲، ویژگی های محدودی از JSON در Postgres فعال شد، از جمله ذخیره سازی و سازماندهی. با این حال، هیچ عملیاتی فعال نشد، زیرا در آن زمان، توسعه دهندگان اعتقاد نداشتند که این کار ضروری است. بنابراین در سال ۲۰۱۳، کار بر روی چیزی را که Native HStore نامیدیم با پشتیبانی از آرایه و تودرتو شروع کردیم و در سال ۲۰۱۴، کار بر روی افزودن ساختار داده بومی ذخیره سازی باینری و ساختار HStore برنامه کاربردی را آغاز کردیم. از آنجایی که نام JSON قبلاً برای ویژگی‌ها در Postgres استفاده می‌شد، تصمیم گرفتیم از JSONB برای “JSON Binary” به عنوان نام استفاده کنیم.

وقتی JSONB در PostgreSQL نسخه ۹.۴ در سال ۲۰۱۴ در دسترس قرار گرفت، محبوبیت پایگاه داده به طور قابل توجهی افزایش یافت.

معرفی HTMX: HTML پویا بدون جاوا اسکریپت

در حالی که توانایی جست‌وجو کردن داده‌های ساختاریافته و بدون ساختار بزرگترین جذابیت JSONB در PostgreSQL است، در دسترس بودن JSONB نیز با افزایش علاقه به معماری میکروسرویس‌ها همزمان شد. در این معماری، هر میکروسرویس برای پاسخ به یک سوال شناخته شده وجود دارد (به عنوان مثال، نمایش برخی از محصولات با تمام ابرداده های آن و غیره)، که دسترسی سریع به داده های انبوه شناخته شده را ضروری می کند. اینجاست که JSONB می درخشد زیرا نتیجه از پیش محاسبه شده انباشتگی داده را ذخیره می کند، که دسترسی سریع را امکان پذیر می کند.

قابلیت های فعلی PostgreSQL با JSONB

قابلیت‌های کلیدی JSONB شامل طراحی طرحواره ساده‌تر و انعطاف‌پذیر، جستجوهای سریع‌تر و پشتیبانی از نمایه‌سازی است. بیایید آن ها را یکی یکی بگیریم.

طراحی طرحواره ساده تر و انعطاف پذیر. طرحواره های انعطاف پذیر به توسعه دهندگان امکان می دهد پروژه های جدید را سریعتر راه اندازی کنند. و از آنجایی که ستون‌ها را می‌توان پرس و جو کرد، فهرست کرد و به هم پیوست، JSONB عملکرد قابل توجهی را نسبت به JSON بهبود می‌بخشد. توسعه سریع اپلیکیشن تقاضا برای تصحیح مداوم در ساختارهای داده را افزایش می دهد. هر اسکرام اسپرینت ممکن است تعداد ویژگی ها و انواع آنها را تغییر دهد. علاوه بر این، برای برخی از انواع رکوردها، تعدادی از ویژگی ها (به عنوان مثال، رنگ، قیمت در واحد، اندازه) ممکن است نیاز به ذخیره داشته باشند در حالی که برخی دیگر ممکن است نیاز نداشته باشند (وزن، قیمت هر پوند، تاریخ تولید و غیره). اگر فقط از جداول استفاده می‌کنید و نیاز به افزودن ویژگی‌های بیشتری دارید، باید ساختار داده‌ها را تغییر دهید، مشخص کنید که کدام ویژگی‌ها اجباری هستند، تعیین کنید که آیا رکوردهای قدیمی نیازهای جدید را برآورده می‌کنند یا نه، و به طور بالقوه آنها را بر این اساس اصلاح کنید. JSONB انعطاف‌پذیری را در تعریف طرح داده ارائه می‌دهد و به توسعه‌دهندگان اجازه می‌دهد تا برنامه‌ها را سریع‌تر ایجاد کنند و آنها را بهتر با نیازهای مشتری تطبیق دهند.

سرعت. از آنجایی که JSONB داده‌ها را در قالب باینری ذخیره می‌کند، پرس‌وجوها به‌طور قابل توجهی سریع‌تر پردازش می‌شوند. ذخیره داده ها به صورت دودویی به Postgres اجازه می دهد تا بدون خواندن کل رکورد JSON به یک جفت کلید-مقدار خاص JSON دسترسی داشته باشد. کاهش بار دیسک باعث افزایش سرعت عملکرد کلی می شود.

پشتیبانی از نمایه‌سازی. ویژگی نمایه‌سازی دسترسی سریع‌تر به جفت‌های کلید-مقدار JSON را که معیارهای خاصی را برآورده می‌کنند، امکان‌پذیر می‌سازد. Postgres اکنون اطلاعات بیشتری در مورد داده های داخل رکوردهای JSONB می داند و فقط جفت های کلید-مقدار مورد نیاز برای انجام پرس و جوهای SQL را انتخاب می کند.

مورد استفاده رایج JSONB

اگرچه ناشناس هستند، توضیحات مورد استفاده زیر بر اساس استقرار واقعی PostgreSQL است.

فین تک

برنامه‌های فین‌تک دائماً در حال پیشرفت هستند. به طور معمول، تیم‌های توسعه‌دهنده مختلف باید بتوانند ویژگی‌های جدید را اضافه کنند و همزمان نسخه‌هایی را منتشر کنند. JSONB انعطاف پذیری لازم را برای تغییر ساختار داده ها فراهم می کند. یکی از ارائه‌دهندگان خدمات فین‌تک از JSONB به‌عنوان قالبی یکپارچه استفاده می‌کند که امکان انتقال اطلاعات بین سیستم‌های جلویی و بک‌اند و DBMS را فراهم می‌کند. به لطف استفاده از JSONB، ساختار داده پایدار اختصاص داده شده در داخل پایگاه داده را می توان به طور یکپارچه تغییر داد یا گسترش داد.

با اسکنر Trivy امنیت را در CI/CD ادغام کنید

سیستم های رای گیری

یک ارگان دولتی منطقه ای یک سیستم رای گیری چند منظوره را اجرا کرد که از رای گیری برای انواع موضوعات محلی (ساخت و ساز، مدیریت زمین، حمل و نقل و غیره) توسط بیش از ۱۰ میلیون نفر پشتیبانی می کند. قوانین رای دادن به شهروندان این امکان را می دهد که نظر خود را در مورد رای خود تغییر دهند و چندین بار رای دهند. هر رأی هم در پایگاه داده و هم در یک بلاک چین برای تغییر ناپذیری ثبت می شود. رای نهایی در پایگاه داده ذخیره می شود و کل تاریخچه رای دادن هر فرد برای هر موضوع در یک فیلد JSONB ثبت می شود. این رویکرد به افزایش سرعت عملیات سیستم ده برابر کمک کرد و نتایج نهایی اکنون بسیار سریعتر ارائه می شود.

بانکداری

در بانکداری، برنامه‌ها و خدمات دائماً در حال توسعه هستند که منجر به تغییرات مکرر قالب API می‌شود. یک بانک از یک گذرگاه یکپارچه سازی برای پیام رسانی بین سیستم های پشتیبان استفاده می کند و همه پیام ها ثبت می شوند. هر مرحله از تبادل داده ثبت می شود تا تقلب و خطا در زمان وقوع آنها شناسایی شود. از آنجا که ذخیره داده ها در JSONB خالص در یک پایگاه داده NoSQL نمی تواند عملکرد لازم را برای جستجو و تجزیه و تحلیل داده ها فراهم کند، برخی از داده ها در ساختارهای رابطه ای PostgreSQL ذخیره می شوند و تنها ویژگی های تغییر یافته به فیلدهای JSONB می روند. یک بار دیگر، Postgres بهترین های هر دو جهان را ارائه می دهد.

مراقبت های بهداشتی

آزمایش‌های پزشکی معمولاً بر اساس سلامت کلی بیمار و علائم فعلی تجویز می‌شوند. در حالی که ممکن است مجموعه استانداردی از شاخص‌ها برای آزمایش‌های خاص وجود داشته باشد، ممکن است پزشک بخواهد آزمایش‌های اضافی را انجام دهد یا مسائل دیگر را بررسی کند. این باعث می‌شود تعداد آزمایش‌هایی که یک آزمایشگاه برای مجموعه خاصی از شاخص‌ها انجام می‌دهد، در معرض تغییر دائمی باشد. یک سیستم مراقبت های بهداشتی نتایج آزمایش را در یک ساختار داده یکنواخت ذخیره می کند. با تشکر از JSONB، افزودن نوع جدیدی از تست را می توان بدون هیچ گونه تغییر ساختار داده انجام داد. نمایه سازی JSONB جستجوی سریع نتایج آزمایش را با هر ترکیبی از هر شاخص و محدوده ارزش آنها امکان پذیر می کند.

محدودیت های فعلی و آینده JSONB در PostgreSQL

توسعه JSONB تمام نشده است. اگرچه این یک ویژگی بسیار مفید PostgreSQL است، اما همه چالش های پایگاه داده را حل نمی کند. این یک گلوله نقره ای نیست. به عنوان مثال، به‌روزرسانی‌ها را تا حد امکان به‌طور مؤثر مدیریت نمی‌کند. برای به روز رسانی تنها یک کلید در JSONB، PostgreSQL کل فیلد را به روز می کند، که می تواند بسیار بزرگ باشد. در حال حاضر هیچ به روز رسانی جزئی وجود ندارد. PostgreSQL همچنین قادر به به روز رسانی در محل نیست، بنابراین هزینه به روز رسانی فیلدهای بزرگ JSONB بسیار بالا است. این مشکل اصلی برای JSONها است، حداقل برای استقرارهای بزرگ.

Ruvy کد Ruby را به WebAssembly تبدیل می کند

البته، راه‌حل‌هایی وجود دارد. با این حال، کاربران به راه حل های ساده نیاز دارند، بنابراین سازگاری با به روز رسانی JSONB یکی از اهداف کلیدی توسعه آینده است. از جمله کارهای دیگری که روی آنها کار می شود، جستجوی کلید سریعتر در یک فیلد JSONB و شفاف سازی فناوری ذخیره سازی داخلی JSON برای کاربران است. در حال حاضر، از دیدگاه کاربر، JSON و JSONB انواع داده‌های متفاوتی هستند. راه بهتر این است که آنها را به عنوان دو فناوری ذخیره سازی برای یک نوع داده ساختاریافته ارائه کنید.

استانداردهای JSON و SQL

PostgreSQL اولین DBMS رابطه‌ای بود که پشتیبانی JSON را معرفی کرد و قابلیت جستجوی فهرست JSONB منحصربه‌فرد است. بنابراین در هفت سال گذشته، PostgreSQL جلوتر از استانداردهای موجود توسعه یافته است. با این حال، استاندارد SQL:2016 که در دسامبر ۲۰۱۶ به تصویب رسید، ویژگی های نحوی جدیدی را برای کار با داده های JSON در DBMS ها اعلام کرد. تقریباً نیمی از این موارد در PostgreSQL پیاده سازی شده اند. سایر DBMS ها نیز این استاندارد را تا حدی پیاده سازی می کنند. اما سیستم نوع داده منعطف PostgreSQL با چندشکلی عملیاتی، راه بسیار ارگانیکی را برای مقابله با داده‌های JSON ارائه می‌کند، که اکنون هم در سبک استاندارد SQL و هم در سبک اولیه PostgreSQL امکان‌پذیر است.

تعجبی نیست که محبوبیت PostgreSQL همچنان رو به افزایش است. این پایگاه داده منبع باز بهترین های هر دو جهان را ارائه می دهد و به کسب و کارها امکان می دهد داده های ساختاریافته و بدون ساختار را مدیریت کنند. علاوه بر این، ظهور کسب‌وکارهای آنلاین باعث شده است که تعداد زیادی از توسعه‌دهندگان جاوا اسکریپت بدون درک اطلاعات داخلی پایگاه داده وارد صنعت شوند. JSONB توانایی کار کم و بیش یکنواخت در کد و پایگاه داده را برای آنها فراهم می کند و تضادهای بین دنیای کد محور و داده محور را هموار می کند. بنابراین، محبوبیت JSONB – و PostgreSQL – نیز با تبدیل شدن به فناوری‌های کم‌کد و بدون کد در حال افزایش است.

اولگ بارتونوف یکی از بنیانگذاران و مدیر عامل Postgres Professional است. Bartunov که یکی از مشارکت‌کنندگان اصلی PostgreSQL است، از سال ۱۹۹۵ از PostgreSQL استفاده می‌کند و از سال ۱۹۹۶ در حال توسعه و ترویج PostgreSQL است. مشارکت‌های PostgreSQL او شامل پشتیبانی محلی، زیرساخت‌های توسعه‌پذیری GiST، GIN، و SP-GiST، جستجوی متن کامل، ویژگی‌های KNN، NoSQL است. (HStore و JSONB)، و چندین برنامه افزودنی از جمله جستجوی فازی، پشتیبانی از ساختارهای درخت مانند و آرایه ها. علاوه بر کار با Postgres Professional، بارتونوف یک دانشمند محقق در دانشگاه دولتی لومونوسوف مسکو و یک ستاره شناس حرفه ای است.

New Tech Forum مکانی برای کاوش و بحث در مورد فناوری سازمانی نوظهور در عمق و وسعت بی سابقه ای فراهم می کند. انتخاب ذهنی است، بر اساس انتخاب ما از فناوری هایی که معتقدیم مهم هستند و برای خوانندگان InfoWorld بیشترین علاقه را دارند. InfoWorld وثیقه بازاریابی را برای انتشار نمی پذیرد و حق ویرایش تمام محتوای ارائه شده را برای خود محفوظ می دارد. همه سوالات را به newtechforum@infoworld.com ارسال کنید.