آزمایش بهروزرسانیها در جداول لجر فقط-درج و درک بهروزرسانیها در جداول لجر قابلبهروزرسانی
جداول لجر در SQL Server قابلیت ضد دستکاری قدرتمندی ارائه میدهند. جداول فقط-درج، تغییر داده را مسدود میکنند، در حالی که جداول قابلبهروزرسانی تمام تغییرات را ثبت میکنند. این مقاله بهصورت عملی این مفاهیم را آزمایش میکند.
آزمایش بهروزرسانیها در جداول لجر SQL Server
جداول لجر در SQL Server عملکرد ضد دستکاری قدرتمندی ارائه میدهند که برای سیستمهای نیازمند سطوح بالای اعتماد و قابلیت حسابرسی ضروری است. دو نوع متمایز برای نیازهای مختلف خدمت میکنند: جداول لجر فقط-درج و جداول لجر قابلبهروزرسانی. جداول فقط-درج تغییرناپذیری سختگیرانهای را اعمال میکنند و اجازه میدهند داده اضافه شود اما هرگز تغییر یا حذف نشود و آنها را برای لاگهای تراکنش یا event sourcing ایدهآل میسازد. در مقابل، جداول قابلبهروزرسانی تغییرات و حذفها را مجاز میدانند در حالی که تاریخچهای از تمام تغییرات را که از نظر رمزنگاری قابل تأیید است، دقیقاً حفظ میکنند، بسیار شبیه به یک بلاکچین.
- ایجاد جدول فقط-درج: با استفاده از
WITH (LEDGER = ON)یک جدول فقط-درج مانندShipping.ShipmentLogایجاد کنید. - آزمایش بهروزرسانی ناموفق: دستور
UPDATEدر جدول فقط-درج با خطا مواجه میشود: "Cannot update rows... because it is an append-only ledger table". - آزمایش حذف ناموفق: دستور
DELETEنیز در جدول فقط-درج با خطای مشابهی شکست میخورد. - ایجاد جدول قابلبهروزرسانی: یک جدول مانند
Banking.AccountBalanceباSYSTEM_VERSIONINGوLEDGER = ONایجاد کنید. - بهروزرسانی موفق و ردیابی تاریخچه: پس از اجرای
UPDATE، تغییرات در جدول تاریخچهAccountBalanceHistoryثبت و از طریق نمای لجر با اتصال بهsys.database_ledger_transactionsقابل مشاهده و تأیید cryptographic هستند.
جداول فقط-درج تمام تغییرات را مسدود میکنند و یکپارچگی داده اصلی را بدون استثنا تضمین میکنند. جداول قابلبهروزرسانی انعطافپذیری و شفافیت را با اجازه دادن به بهروزرسانیها در حالی که تاریخچه قابل تأیید را حفظ میکنند، متعادل میسازند.
این آزمایش فلسفههای عملیاتی متفاوت این دو نوع جدول لجر را برجسته میکند و به کسبوکارها اجازه میدهد پیکربندی مناسب برای نیازهای خاص خود را انتخاب کنند.
