قابلیت JSONB در پایگاه داده PostgreSQL برای امروز و آینده
دوشنبه 15 فروردین 1401پیش از آن که بخواهیم درباره پایگاه داده PostgreSQL و قابلیت JSONB در آن صحبت کنیم اجازه دهید تا کمی بیشتر درباره اهمیت پایگاه داده ها صحبت کنیم.
همه ما می دانیم که امروزه داده ها نوآوری های صنایع مختلف را هدایت می کنند و می توانند تجربیات بهتری را برای مشتریان ایجاد کنند. به همین علت است که امروزه شرکت ها تمایل دارند تا برای استفاده بهینه از داده های خود به انواع پایگاه داده و سرویس های مبتنی بر کلود متکی باشند. در چنین محیط هایی که ممکن است سردرگمی های زیادی در آن به وجود بیاید استفاده از پایگاه داده PostgreSQL به علت توانایی هایی که در مدیریت داده های ساختار یافته و بدون ساختار دارد می تواند یک گزینه بسیار جذاب باشد. ما در این مطلب قصد داریم کمی بیشتر درباره پایگاه داده PostgreSQL و قابلیت JSONB در آن صحبت کنیم و اطلاعات جامع و کاملی را در خصوص این موضوع در اختیار شما قرار دهیم. بنابراین با ما در ادامه این مطلب همراه باشید.
آشنایی با پایگاه داده PostgreSQL
پایگاه داده PostgreSQL یک سیستم پایگاه داده رابطه ای یا SQL است که دارای سابقه ای بیش از 30 سال می باشد. یکی از دلایل اصلی محبوب بودن آن قابلیت اطمینان فوق العاده بالا و همینطور مجموعه ای از ویژگی های قوی عملکردی عالی و شناخته شده می باشد. در کنار پایگاه های داده باید بدانید که جیسون یک فرمت تبادل داده است که برنامه ها و اپلیکیشن ها را قادر می سازد تا اسناد مبتنی بر متن را به راحتی ذخیره کرده و آنها را تجزیه و تحلیل کنند. به این ترتیب می توان گفت جیسون پایگاه داده های NoSQL را تقویت می کند. JSONB یک نوع داده انحصاری برای پایگاه داده PostgreSQL است که در واقع نسخه تکامل یافته جیسون می باشد و می تواند داده های مبتنی بر متن را به صورت باینری ذخیره کند. همین عامل نیز باعث می شود تا برنامه ها و اپلیکیشن هایی که به داده های بدون ساختار نیازمند هستند به صورت سریع تری بتوانند به این داده ها دسترسی پیدا کنند.
نوع داده JSONB در پایگاه داده PostgreSQL
JSONB در حال حاضر محبوب ترین نوع داده پشتیبانی شده است که از Postgres استفاده می کند. یکی از مهمترین مزایای آن این است که یک شمای منعطف را در اختیار شما قرار می دهد که به کسب و کارها برای افزایش سریع پروژه های جدید و فشرده سازی برای کاهش هزینه های اضافی و بهبود عملکرد کمک می کند. این ویژگی به کسب و کارها این امکان را می دهد تا وظایف بیشتری را با استفاده از یک راهکار مبتنی بر پایگاه داده انجام دهند و نوآوری های بیشتری را در مدت زمان کوتاه تر معرفی کنند. علاوه بر این باید دقت داشته باشید که این ویژگی به حفظ منابع توسعه کمک کرده و فشار کمتری را بر تیم ها برای مدیریت امنیت اپلیکیشن های مختلف وارد می کند.
تاریخچه ای مختصر از آوردن JSON و JSONB به پایگاه داده PostgreSQL
در سال 2000 میلادی یک پورتال بزرگ روسی در زمان کار کردن روی Rambler.ru شروع به پیاده سازی آرایه های متنی و جستجوی تمام متن در این پایگاه داده کردند. در سال 2003 میلادی این تیم HStore را برای ذخیره جفت های کلید-مقدار در قالب باینری پیاده سازی کرد. این مسئله انعطاف پذیری شِماها را به میزان زیادی افزایش داده و به همین علت نیز به سرعت در میان کاربران محبوب شد. در سال 2006 این ویژگی ها به طور رسمی در پایگاه داده PostgreSQL به عنوان یک افزونه جدید اضافه شدند.
در سال 2012 ویژگی های محدودی از جیسون از جمله ذخیره سازی و سازماندهی در این پایگاه داده فعال شدند. با این حال باید دقت داشته باشید که در این زمان هیچ عملکردی فعال نشد چرا که در آن زمان توسعه دهندگان اعتقاد نداشتند که این ویژگی ها ضروری است. در سال 2013 این تیم کار بر روی چیزی که Native HStore نامیده میشد را آغاز کردند که از آرایه ها و قابلیت های تودرتو پشتیبانی می کرد و همینطور در سال 2014 نیز این تیم به کار کردن روی اضافه کردن یک ساختار داده نیتیو که مانند حافظه عمل می کرد مشغول شدند. از آنجایی که نام JSON در آن زمان برای برخی از ویژگی های این پایگاه داده استفاده میشد این تیم تصمیم گرفت که آن را JSONB بنامد که در واقع نشان دهنده عبارت JSON Binary است.
عواملی که باعث محبوبیت JSONB شدند
زمانی که قابلیت JSONB در نسخه 9.4 پایگاه داده PostgreSQL در سال 2014 در دسترس قرار گرفت محبوبیت این پایگاه داده به میزان زیادی افزایش پیدا کرد. در حالی که توانایی جستجوی داده های ساختاریافته و بدون ساختار بزرگترین مزیت JSONB در PostgreSQL به شمار می آمد در دسترس بودن JSONB نیز با افزایش علاقه به معماری میکروسرویس ها افزایش پیدا کرد. در این معماری هر میکروسرویس برای پاسخ به یک سوال مشخص شده فعالیت می کند( به عنوان مثال نمایش برخی از محصولات با تمام متادیتاهای آن) که این عامل دسترسی سریع به داده های انبوه شناخته شده را به میزان زیادی بهبود می دهد. دقیقا اینجاست که JSONB می درخشد چرا که نتیجه از پیش محاسبه شده انباشتگی داده را ذخیره می کند که دسترسی سریع را برای شما امکان پذیر می کند.
قابلیت های فعلی PostgreSQL با استفاده از JSONB
یکی از قابلیت های کلیدی JSONB طراحی ساده تر و منعطف شِما است که باعث می شود تا کوئری ها با سرعت بیشتری نتیجه بگیرند و قابلیت ایندکس شدن نیز پشتیبانی شود.
شِماهایی که منعطف هستند به توسعه دهندگان اجازه می دهند تا پروژه های جدید را با استفاده از پایگاه داده PostgreSQL سریع تر راه اندازی کنند. علاوه بر این چون شما می توانید نسبت به ستون های پایگاه داده خود نیز کوئری بزنید، آنها را ایندکس کنید و به یکدیگر متصل کنید JSONB می تواند به میزان بسیار زیادی روی عملکرد برنامه شما نیز تاثیرگذار بوده و آن را بهبود دهد. توسعه سریع اپلیکیشن ها تقاضا برای تصحیح مداوم در ساختار داده ها را نیز افزایش می دهد. نکته مهمی که در این جا باید به آن دقت داشته باشید این است که هر scrum sprint ممکن است تعداد ویژگی ها و انواع آنها را نیز تغییر دهد.
برخی دیگر از قابلیت های JSONB در پایگاه داده PostgreSQL
نکته دیگری که درباره استفاده از JSONB در پایگاه داده PostgreSQL وجود دارد این است که برای برخی از انواع رکوردها تعداد زیادی از ویژگی ها( مانند رنگ، قیمت در واحد و اندازه) ممکن است نیاز به ذخیره شدن داشته باشند و این در حالی است که برخی دیگر ممکن است نیازی به ذخیره شدن نداشته باشند( مانند تاریخ تولید، وزن و ...). بنابراین اگر شما تنها از جدول ها استفاده می کنید و نیازمند افزودن ویژگی های بیشتری هستید باید ساختار داده های خود را تغییر دهید و مشخص کنید که کدام ویژگی ها اجباری هستند. علاوه بر این شما باید مشخص کنید که آیا رکوردهای قدیمی نیازهای جدید را برآورده می کنند یا خیر و به طور بالقوه آنها را بر این اساس اصلاح کنید. دقت داشته باشید که JSONB و پایگاه داده PostgreSQL انعطاف پذیری را در تعریف شِمای داده برای شما فراهم می کند و به توسعه دهندگان اجازه می دهد تا برنامه ها و اپلیکیشن های خود را سریع تر ایجاد کرده و آنها را بهتر با نیازهای مشتری خود تطبیق دهند.
نکاتی مهم درباره JSONB
از آنجایی که JSONB در پایگاه داده PostgreSQL داده ها را در قالب باینری ذخیره می کند کوئری های موجود به طور قابل توجهی با سرعت بیشتری پردازش می شوند. ذخیره داده ها به صورت باینری به این پایگاه داده اجازه می دهد تا بدون خواندن کل رکورد جیسون به یک جفت کلید-مقدار خاص دسترسی پیدا کند. این مسئله نیز می تواند به میزان زیادی روی بهبود عملکرد تاثیرگذار باشد.
پشتیبانی از قابلیت ایندکس کردن ویژگی ها باعث دسترسی سریع تر به جفت های کلید-مقدار جیسون می شود که باعث برآورده شدن معیارهای خاصی در این پایگاه داده خواهد شد. پایگاه داده PostgreSQL در حال حاضر اطلاعات بیشتری درباره داده های داخل رکوردهای JSONB دارد و همین عامل نیز باعث می شود تا تنها جفت های کلید-مقدار مورد نیاز برای انجام کوئری ها در پایگاه داده PostgreSQL را انتخاب کند.
کاربردهای این پایگاه داده در Fintech
اپلیکیشن های Fintech دائما در حال پیشرفت هستند. به طور معمول تیم های توسعه دهنده مختلف باید بتوانند ویژگی های جدید را اضافه کرده و همزمان نسخه هایی را منتشر کنند. JSONB در پایگاه داده PostgreSQL می تواند انعطاف پذیری لازم برای تغییر ساختار داده ها در این شرایط را فراهم کند. یکی از ارائه دهندگان سرویس های Fintech از JSONB به عنوان یک قالب یکپارچه استفاده می کند که امکان انتقال اطلاعات بین سیستم های فرانت اند و بک اند و همینطور پایگاه داده های رابطه ای را فراهم می کند. به لطف استفاده از JSONB ساختار داده پایدار اختصاص داده شده در داخل پایگاه داده را می توان به طور یکپارچه تغییر یا گسترش داد.
JSONB و پایگاه داده PostgreSQL در سیستم های رای گیری
یک نهاد دولتی منطقه ای یک سیستم رای گیری چند منظوره را طراحی کرده است که برای رای گیری در موضوعات مختلف( ساخت و ساز، مدیریت زمین ها، حمل و نقل و ...) از آن استفاده می کند و توسط بیش از 10 میلیون نفر پشتیبانی می شود. قوانین رای دادن در آن به شهروندان این امکان را می دهد که نظر خود را در مورد یک رای تغییر دهند یا این که چندین بار رای دهند. هر رای هم در یک پایگاه داده و هم در بلاک چین برای تغییر ناپذیری ثبت می شود. رای نهایی در یک پایگاه داده ذخیره می شود و کل تاریخچه رای دادن هر فرد برای هر موضوع در یک فیلد JSONB ثبت می شود. این رویکرد به افزایش سرعت عملیات سیستم کمک کرده و این سرعت را چند برابر می کند. علاوه بر این نتایج نهایی نیز در این روش با سرعت بیشتری ارائه می شوند.
سیستم های بانکداری و استفاده از JSONB
در سیستم های بانکداری سرویس ها و برنامه های مختلف دائما در حال تغییر و پیشرفت هستند که این عامل باعث تغییرات مکرر فرمت API می شود. یک بانک از یک گذرگاه یکپارچه برای انتقال پیام ها بین سیستم های پشتیبان استفاده می کند و همه پیام ها نیز به این ترتیب ثبت می شوند. دقت داشته باشید که هر مرحله از تبادل داده ثبت می شود تا از تقلب و خطا در زمان وقوع آنها جلوگیری شود. از آنجایی که ذخیره داده ها در JSONB در پایگاه داده NOSQL نمی تواند عملکرد لازم را برای جستجو و تجزیه و تحلیل داده ها ارائه دهد برخی از داده ها در ساختارهای رابطه ای متعلق به پایگاه داده PostgreSQL ثبت می شوند و تنها ویژگی هایی که نیاز به تغییر دارند به فیلدهای JSONB می روند. دقت داشته باشید که پایگاه داده PostgreSQL در واقع ویژگی های مفید را به طور کامل ادغام کرده است.
اپلیکیشن های مراقبت های بهداشتی و پایگاه داده PostgreSQL
آزمایش های پزشکی معمولا بر اساس سلامت کلی بیمار و علائم فعلی تجویز می شوند. این در حالی است که ممکن است مجموعه استانداردی از شاخص ها برای آزمایش های خاص نیز وجود داشته باشند، ممکن است پزشک بخواهد تا آزمایش های خاصی را از بیمار بگیرد یا مسائل دیگری را بررسی کند. این باعث می شود تا تعداد آزمایش هایی که یک آزمایشگاه برای مجموعه ای از شاخص ها و معیارها انجام می دهد در معرض تغییر دائمی باشد. یک سیستم مراقبت های بهداشتی نتایج آزمایش را در یک ساختار داده یکنواخت ذخیره می کند. به لطف پایگاه داده PostgreSQL و قابلیت JSONB افزودن نوع جدیدی از تست را می توان بدون هیچ گونه تغییر ساختار داده انجام داد. ایندکس کردن JSONB امکان کوئری گرفتن و جستجو را در این کاربرد می تواند به میزان زیادی افزایش دهد.
محدودیت های فعلی و آینده در JSONB در پایگاه داده PostgreSQL
توسعه JSONB هنوز به اتمام نرسیده است. در حالی که این یک ویژگی بسیار جذاب در پایگاه داده PostgreSQL به شمار می آید هنوز هم نمی تواند بسیاری از چالش های موجود در پایگاه داده ها را برطرف کند. به عنوان مثال به روزرسانی ها تا حد امکان به طور موثر مدیریت نمی شوند. برای به روزرسانی تنها یک کلید در پایگاه داده PostgreSQL می تواند کل فیلد یک JSONB را به روزرسانی کند که این مسئله می تواند ابعاد بسیار بزرگی داشته باشد. در حال حاضر هیچ به روزرسانی جزئی وجود ندارد. پایگاه داده PostgreSQL همچنین قادر به بروزرسانی محلی نیز نیست و به همین علت نیز هزینه به روزرسانی فیلدهای بزرگ در این پایگاه داده و در JSONB بسیار بالا خواهد بود.
راهکارهای موجود برای این مشکلات
در کنار مسائلی که در بخش بالا بیان کردیم باید بدانید که راهکارهایی برای برطرف کردن این مشکلات وجود دارد. با این حال کاربران معمولا نیازمند راهکارهای ساده هستند. به همین علت نیز سازگاری با به روزرسانی های JSONB یکی از اهداف آینده در پایگاه داده PostgreSQL می باشد. از جمله مسائلی که در حال حاضر نیز تیم توسعه دهنده در حال کار کردن روی آن هستند جستجوی کلید با سرعت بیشتر در یک فیلد JSONB می باشد که این مسئله با شفاف سازی فناوری ذخیره سازی داخلی برای کاربران همراه خواهد شد. در حال حاضر از نظر کاربران JSON و JSONB انواع داده های متفاوتی هستند. راه بهتر این است که آنها را به عنوان دو فناری ذخیره سازی برای یک نوع داده ساختار یافته ارائه دهیم.
استانداردهای جیسون و SQL
پایگاه داده PostgreSQL اولین پایگاه داده رابطه ای بود که پشتیبانی از جیسون را معرفی کرد و قابلیت جستجوی ایندکس JSONB نیز یک قابلیت کاملا منحصر به فرد بود. بنابراین در هفت سال گذشته این پایگاه داده پیشرو در استانداردهای موجود بوده است. با این حال استاندارد SQL:2016 که در سال 2016 به تصویب رسید ویژگی های سینتکس جدیدی را برای کار با داده های جیسون در پایگاه داده های رابطه ای معرفی کرد. تقریبا نیمی از این موارد در پایگاه داده PostgreSQL پیاده سازی شده اند. البته سایر پایگاه داده های رابطه ای نیز تا حدودی این استانداردها را پیاده سازی کرده اند. با این حال پایگاه داده PostgreSQL نوع داده بسیار منعطفی را ارائه می دهد که کار کردن با داده های جیسون را بسیار ساده تر می کند.
محبوبیت پایگاه داده PostgreSQL
جای تعجب نیست که محبوبیت پایگاه داده PostgreSQL همچنان در حال افزایش است. این پایگاه داده متن باز بهترین ویژگی ها را جمع آوری و ادغام کرده و به کسب و کارها اجازه می دهد تا داده های ساختار یافته و بدون ساختار را به راحتی مدیریت کنند. علاوه بر این ظهور کسب و کارهای آنلاین باعث شده است تا تعداد زیادی از توسعه دهندگان جاوا اسکریپت بدون درک اطلاعات داخلی پایگاه داده بتوانند وارد این صنعت شوند. JSONB توانایی کار به صورت یکنواخت روی کد و پایگاه داده را فراهم کرده است و تضادهایی که بین پروژه های کد محور و پروژه های داده محور بود را از بین برده است. به همین علت است که محبوبیت JSONB و PostgreSQL دائما در حال افزایش است و پیشبینی می شوند که این روند ادامه دار باشد.
- برنامه نویسان
- 1k بازدید
- 0 تشکر