هر زمان یک نرم افزار نسخه ی جدیدش را منتشر می کنند همه به دنبال دلایلی قانع کننده برای کوچ از نسخه قبلی به نسخه جدید هستند ، شاید این مقاله دلایل کافی برای کوچ کردن به SQL Server 2016 را به شما بدهد .

Query Store
یک مشکل مشترک که اکثر سازمان ها به هنگام به روزرسانی ورژن های مختلف SQL با آن مواجه بودند تغییرات در Query Optimizer بود که که روی عملکرد تاثیر منفی می گذاشت. بدون یک تست جامع و کامل پیدا کردن و حل کردن Queryهایی که متضرر این تاثیر منفی شده اند پروسه ای طاقت فرسا به حساب می آمد. قابلیت Query Store سابقه ای تمامی Query Execution Planها را به همراه اطلاعات عملکرد آن ها نگهداری کرده و به سرعت Queryهایی که اخیرا کند شده اند را شناسایی می کند تا ادمین ها و یا Developerها اگر لازم بود بتوانند از Planهای قدیمی تر و با سرعت بیشتر به صورت Forceاستفاده کنند. قابلیت Query Store در هر دیتابیس به صورت جداگانه کانفیگ می شود.
 



Polybase
احتمالا این روزها همگی اصطلاحاتی نظیر BigData  و یا Hadoop را شنیده ایم . Hadoop یک راه مقیاس پذیر و مقرون به صرفه برای ذخیره سازی حجم عظیمی از دیتا می باشد. مایکروسافت در افزونه ای که در سال 2015 برای مبحث Data Warehouse منتشر کرد Polybase که یک ابزار اتصال به Hadoop  (و Azure Blob Storage) می باشد را معرفی کرده بود ، اما اکنون مایکروسافت Polybase را به عنوان محصولی که می توانید روی دستگاه خود نصب کنید معرفی کرده است. این قابلیت امکان ذخیره سازی حجم عظیمی از دیتا را به شما در Hadoop و یا Azure Blob Storage می دهد.


Stretch Database
"ذخیره سازی این روزها چه ارزان شده است" ، این عبارت را شنیده اید؟ ممکن است خرید یک هارد 3 ترابایتی از دیجی کالا چندان هم گران نباشد ولی اگر مجبور باشید از SAN Storage و یا SSD استفاده کنید خواهید فهمید که ذخیره سازی نه تنها ارزان نیست بلکه خیلی هم گران به شمار می رود. مایکروسافت در تلاش است تا حجم ذخیره سازی و هزینه های چردازشی شما را با معرفی قابلیت ترکیبی جدیدی به نام Stretch Database کاهش دهد. مبنای این قابلیت این است که برخی از قسمت های جدول شما (به صورت اتوماتیک و یا قابل کانفیگ) به یک دیتابیس Azure به صورت Cloud و کاملا ایمن انتقال یابند. وقتی روی آن جداول Query می زنید Query Optimizer می داند که کدام سطر ها روی سرور شما و کدام سطرها روی Azure  قرار دارند ، پس تنها تاخیر مربوط می شود به سرعت انتقال اطلاعات از طریق شبکه. در واقع به جای اینکه هزینه ابزارهای ذخیره سازی گران قیمت را بپردازید هزینه Azure Blob Storage را که بسیار ارزان تر خواهد بود را پرداخت خواهید کرد.
 



JSON Support
Java Script Object Notation (JSON) ، بله درست شنیده اید ، در دنیای مانور WebApiها دیتابیس های مختلفی طی سال های گذشته JSON را ساپورت کرده اندو حالا نوبت SQL Server 2016  رسیده است تا خودی نشان دهد ، نحوه ی پیاده سازی بسیار مشابه با پیاده سازی XML می باشد با دستورات FOR JSON و OPENJSON انتقال سریع اطلاعات به دیتابیس فراهم می شود.

Row Level Security
همه ماها با مشکل Security دست و پنجه نرم کرده ایم ، نشان دادن کدام صفحه به کدام کاربر ولی جایی که خیلی از ماها به مشکل اساسی خورده ایم آن جاست که در یک جدول می خواستیم برخی از رکوردها را به یک کاربر خاص و برخی دیگر را به کاربر دیگری نمایش دهیم ، و آن جا بود که دست به راه حل هایی نه چندان زیبا زده ایم . حال SQL Server نیز این قابلیت را مشابه خیلی از دیتابیس های دیگر اضافه نموده است ، RLS (Row Level Security) یعنی همان بحث امنیت در سط Row . پیاده سازی RLS در SQL 2016 محدودیت هایی نیز دارد ، UPDATEها و INSERTها پشتیبانی نمی شوند ولی برای شروع این قابلیت بسیار کاربردی خواهد بود.


Always Encrypted
به نظر می رسد که هر روز خبر جدیدتری از دزدیده شدن اطلاعات یک شرکت بزرگ دردنیا به گوشمان می رسد ، خوب Encrypt کردن دیتا راهیست که به ذهن می رسد ولی یک سری از شرکت ها این کار را نمی کنند یا اصلا نمی توانند پیاده سازی کنند و لایه اطلاعات آن ها در قالب فایل تکست در دسترس خواهد بود. SQL Server سال هاست که Encryption در سطح Culomn  ، Encryption در محل ذخیره سازی اطلاعات و Encryption در انتقال اطلاعات را پشتیبانی کرده است. هر چند تمامی این ها می بایستی جداگانه کانفیگ می شدند و گاهی اوقات هم به اشتباه این کانفیگ صورت می گرفت. Always Encrypted قابلیتیست که SQL Server در قالب یک Library در سطح Application به کاربران ارائه می دهد تا اطلاعات در انتقال ، در محل ذخیره سازی و اطلاعاتی که Live در حال استفاده شدن می باشند Encrypt شوند.


In-Memory Enhancements
SQL Server 2014 بود که مفهوم جداول درون حافظه (In-Memory Tables) را معرفی کرد. این جداول برای لود کردن دیتا با سرعت بسیار بالا و بدون مشکل locking طراحی شده بودند. در حالی که این قابلیت روی کاغذ فوق العاده به نظر می رسد ولی در عمل محدودیت های بسیاری به خصوص در زمینه Constraintها و Procedureها وجود داشت. در SQL Server 2016 این قابلیت بسیار پیشرفت کرده ، Foreign Keyها و Constraintهای Unique پشتیبانی می شوند ، به علاوه محدودیت 2 ترابایتی این نوع از جداول نیز برداشته شده است. قسمت دیگر In-Memory مبحث Culomn Store Index می باشد که معمولا در پردازش دیتای بسیار زیاد مخصوصا در Data Warehouseها کاربرد دارد. این قابلیت در SQL 2012  معرفی شده بود و در ورژن های اخیر بهبود یافته. در SQL 2016 این قابلیت بهبودهایی در ضمینه Sorting و پشتیبانی بهتر AlwaysOn Availability Groups داشته است.