معرفی Ledger در SQL Server 2022

معرفی Ledger در SQL Server 2022

نوشته شده توسط: مسعود طاهری
تاریخ انتشار: ۰۶ تیر ۱۴۰۲
آخرین بروزرسانی: ۲۷ خرداد ۱۴۰۳
زمان مطالعه: 4 دقیقه
۳.۹
(۷)

Ledger در SQL Server 2022 یکی از قابلیت‌های جدیدی که در Microsoft SQL Server 2022 معرفی شد و به‌معنای دفتر کل است. این ویژگی برای افزایش امنیت، مقاومت در برابر تغییرات داده و دقت بیشتر در سیستم‌هایی که دارای داده‌های حساس هستند (مانند سیستم مالی، اتوماسیون اداری و…) طراحی شده است.

SQL Server Ledger به‌صورت یک جدول در Database ایجاد می‌شود که با استفاده از این ویژگی، سابقه هر عملیات، که برروی این نوع جداول در سیستم انجام شود، به‌صورت خودکار ذخیره می‌شود. این ویژگی باعث می‌شود تا داده‌های شما به‌صورت دائمی و غیرقابل تغییر در Database ذخیره شود.

Ledger به‌صورت پیش‌فرض در SQL Server 2022 غیرفعال است و باید با دستورات SQL فعال شود. این ویژگی به‌سادگی می‌تواند در سیستم‌هایی که نیاز به ذخیرهٔ دائمی و قابل ‌اطمینان دارند، اضافه شود.

با فعال‌سازی Ledger سیستم به‌صورت خودکار تغییراتی را که در داده‌ها صورت می‌گیرد، به‌طور مشخصی ثبت می‌کند و امکان بررسی و پیگیری این تغییرات برای کاربران سیستم فراهم می‌شود.

همچنین، این ویژگی به‌معنای افزایش سطح اطمینان در سیستم‌های اطلاعاتی است و به کنترل ورود و خروج داده‌ها از سیستم کمک می‌کند.

Ledger در SQL Server 2022 چگونه کار می کند؟

در یک جدول Ledger در SQL Server 2022 هر سطری که توسط یک تراکنش اصلاح شده است، با استفاده از الگوریتم رمزنگاری SHA-256 به‌صورت هش شده و با ساختار داده Merkle Tree، یک Root Hash ساخته می‌شود که تمام سطرهای Transaction را شامل است. استفاده از این روال باعث ایجاد یک زنجیره بلوک یا Blockchain می‌شود.

معرفی Ledger در SQL Server 2022

Hash ریشه در Database Ledger که Database Digests (خلاصه بانک اطلاعاتی) نیز نامیده می‌شود، حاوی تراکنش‌های Hash شده است و وضعیت پایگاه داده را نشان می‌دهد. می‌توان آن‌ها را به‌طور دوره‌ای در خارج از پایگاه‌ داده در فضای ذخیره‌سازی ضددستکاری، مانند:

  • Azure Blob Storage 
  • Azure Confidential Ledger
  • Write Once Read Many (WORM) 

تولید و ذخیره کرد. Database Digests بعداً برای تأیید یکپارچگی پایگاه داده با مقایسه مقدار Hash در پایگاه داده استفاده می‌شود. جداولی که از ویژگی Ledger در SQL Server 2022 پشتیبانی می‌کنند، به دو صورت معرفی می‌شوند:

  1. Updatable Ledger Table

در این نوع جداول، شما اجازه دارید که داده‌های موجود در جداول را حذف و به‌روزرسانی کنید.

  1. Append-only Ledger Table 

در این نوع جداول، صرفاً می‌توان داده در جدول اضافه کرد و اجازه هیچگونه تغییری برروی آن نمی‌شود.

بررسی اولیه Updatable Ledger Table

این نوع جداول در Ledger در SQL Server 2022 برای برنامه‌هایی می‌تواند مفید واقع شود که در آن، علاوه‌بر درج رکورد انجام عملیات به‌روزرسانی و حذف رکورد، از جدول وجود دارد

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

در طی استفاده از این ساختار، ما همیشه آخرین وضعیت رکوردها را در جدول اصلی و سوابق تغییرات رکوردها را در جدول History خواهیم داشت.

معرفی Ledger در SQL Server 2022

بررسی اولیه Append-only Ledger Table

این نوع جداول در Ledger در SQL Server 2022 برای برنامه‌هایی می‌تواند مفید واقع شود که فقط در حالت درج رکورد هستند و انجام عملیات به‌روزرسانی و حذف رکورد برای آن‌ها معنی ندارد. از آنجایی که در این نوع جداول فقط مفهوم درج وجود دارد، بنابراین جدول History معنی ندارد.

معرفی Ledger در SQL Server 2022

جمع بندی

Ledger در SQL Server 2022 به‌سادگی می‌تواند در سیستم‌هایی که نیاز به ذخیرهٔ دائمی و قابل ‌اطمینان دارند، اضافه شود. این ویژگی به افزایش سطح اطمینان در سیستم‌های اطلاعاتی و کنترل ورود و خروج داده‌ها از سیستم کمک می‌کند. در این مقاله جداولی که از ویژگی SQL Server Ledger پشتیبانی می‌کنند را مورد بررسی قرار دادیم که این جداول عبارتند از: 

  • Updatable Ledger Table
  • Append-only Ledger Table

 

 

چه رتبه ای می‌دهید؟

میانگین ۳.۹ / ۵. از مجموع ۷

اولین نفر باش

title sign
معرفی نویسنده
مسعود طاهری
مقالات
20 مقاله توسط این نویسنده
محصولات
65 دوره توسط این نویسنده
مسعود طاهری

مسعود طاهری مدرس و مشاور ارشد SQL Server & BI ،  مدیر فنی پروژه‌های هوش تجاری (بیمه سامان، اوقاف، جین وست، هلدینگ ماهان و...) ، مدرس دوره‌هــای SQL Server و هوش‌تجاری در شرکت نیک‌آموز و نویسنده کتاب PolyBase در SQL Server

title sign
دیدگاه کاربران

    • ممنون از توضیحاتتون…
      این ویژگی در حقیقت برای ایجاد لاگ از رکوردهای یک جدول بکار میره درسته؟
      من برای برخی جداول که میخواستم تغییراتش رو بدونم یه جدول لاگ متناظر با همون جدول ایجاد کردم و در تریگر،هر دیتایی که در جدول اصلی درج و جذف و آپدیت میشه در جدول لاگ متناظر هم رکوردی ثبت میکنم. با این ویژگی میتونم همون نتیجه ای که از کار خودم میگرفتم رو داشت باشم؟