tgoop.com/devtwitter/7871
Last Update:
چرا استفاده از فیلدهای JSON در دادههای تراکنشی ریسک دارد؟
خیلی وسوسهانگیز است که از فیلدهای JSON برای ذخیرهسازی دادههای غیرساختاریافته استفاده کنیم، اما برای دادههای تراکنشی این یک تصمیم پر ریسک است. بیایید به دلایلش نگاهی بیندازیم:
کاهش کارایی جستجو: فیلدهای JSON نمیتوانند به خوبی جداول ساختاریافته از ایندکسهای کارآمد استفاده کنند. این یعنی جستجوهای شما کندتر میشود، که در دادههای تراکنشی که نیاز به سرعت بالا دارند، فاجعه است.
کاهش نرمالسازی و ساختار: پایگاههای داده رابطهای طراحی شدهاند تا روابط بین دادهها را مدیریت کنند. استفاده زیاد از JSON میتواند دادههای غیر نرمال بسازد، که مدیریت و بهروزرسانی آنها را سخت میکند و به ناسازگاریهای داده منجر میشود.
مشکل در صحت دادهها: در جداول نرمالسازی شده، محدودیتهایی مثل نوع داده و روابط وجود دارد که مانع ورود دادههای نادرست میشوند. ولی در JSON، این کنترلها وجود ندارد، پس ممکن است به راحتی دادههای ناسازگار داشته باشید.
گزارشگیری سختتر: اکثر ابزارهای گزارشگیری با دادههای ساختاریافته بهتر کار میکنند. برای استفاده از دادههای JSON باید آنها را تجزیه و ساختاردهی کنید که وقتگیر است و روی سرعت تأثیر میگذارد.
مدیریت پیچیدهتر تراکنشها: اگر بخواهید دادههای مختلفی را در یک فیلد JSON همزمان بهروزرسانی کنید، مدیریت تراکنشها سختتر و پیچیدهتر میشود.
پس چکار کنیم؟
از ترکیب جداول رابطهای و JSON به شکل هوشمندانه استفاده کنیم.
برای دادههای غیرساختاریافته جداول مرتبط ایجاد کنیم.
فقط در صورت لزوم روی فیلدهای JSON ایندکس بگذاریم.
طرحی برای مهاجرت تدریجی به ساختارهای بهتر داشته باشیم.
چکار نکنیم؟
کل دادههای مهم را در JSON ذخیره نکنیم.
به جای نرمالسازی از JSON استفاده نکنیم.
نوع JSON را برای دادههایی که مرتب تغییر میکنند به کار نبریم.
در نهایت، برای دادههای تراکنشی که سرعت، جستجوی مکرر و صحت داده اهمیت دارند، بهتر است به جداول نرمالسازی شده پایبند بمانیم و از JSON فقط در موارد ضروری استفاده کنیم. و اگر احساس میکنید این محدودیتها زیاد است، راهحلهایی مثل Cassandra و Google Bigtable را جدی بگیرید! یادتان باشد، مشکلات پرفرمنس میتوانند خیلی زودتر از چیزی که فکرش را بکنید، کسب و کار شما را تهدید کنند.
@DevTwitter | <Firoozeh Daeizadeh/>
BY DevTwitter | توییت برنامه نویسی
Share with your friend now:
tgoop.com/devtwitter/7871