Seyed Abolfazl Mousavi
Seyed Abolfazl Mousavi
خواندن ۴ دقیقه·۷ ساعت پیش

کنشگری SQL در دنیای بی‌نهایت باز NoSQL

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

در حقیقت سیستم ذخیره‌سازی داده‌ها در این نوع پایگاه‌داده‌ها به جای جدول، از سندها برای ذخیره‌سازی اطلاعات استفاده می‌کند که ساختار مشخصی ندارد. nosql در ساختار داخلی خود از Schema پویا و قابل تغییر” یا “Dynamic Schema” استفاده می‌نماید که باعث می‌شود امکان تغییر در ساختار ذخیره‌سازی داده‌ها فراهم و انعطاف‌پذیری بسیاری به دیتابیس در کار با داده‌های گوناگون و حجیم ایجاد گردد. از ویژگی‌های کلیدی NoSQL می‌توان به موارد زیر اشاره کرد:

  • سازگاری با داده‌های متعدد: همان طور که می‌دانید پایگاه داده‌های رابطه‌ای معمولا قبل از این‌که بتوانند به داده‌ها دسترسی پیدا کنند و آن‌ها را تجزیه و تحلیل نمایند، نیاز به جدول دارند و در واقع نیاز به یک ساختاردهی خوب و منظم است تا بتوان اطلاعات مورد نیاز را دریافت کرد. درحالی‌که NoSQL مدیریت داده‌ها را بسیار انعطاف‌پذیر می‌کند تا جایی که می‌توان داده‌های بدون ساختار، نیمه ساختار و ساختاریافته را با سرعت و سهولت بالاتری دریافت کند.
  • توزیع جهانی داده‌ها: NoSQL می‌توانند توزیع داده‌ها در مقیاس جهانی تضمین کند که این قابلیت را از طریق چندین منطقه ابری و مراکز داده‌ای برای عملیات خواندن و نوشتن در مکان‌های مختلف انجام می‌دهد، درصورتی‌که پایگاه‌های داده رابطه‌ای عموما به برنامه‌های متمرکز و وابسته به مکان شمخص برای عملیات خواندن و نوشتن متکی هستند.
  • حداقل زمان توقف: در نهایت، پایگاه‌های داده NoSQL قوی هستند و حداقل زمان خرابی را دارند. همچنین تداوم کسب و کار از طریق معماری بدون سرور و ایجاد کپی‌های متعدد از داده‌ها باعث می‌شود‌‌ در صورت نقص عملکرد یک سند، دیگر سندها به کپی داده‌های خود دسترسی داشته باشند.

از انواع پایگاه‌داده‌های مرتبط با فناوری بنیادین nosql می‌توان به موارد زیر اشاره کرد که Microsoft SQL Server به این فهرست تعلق ندارد:

  • MongoDB
  • Apache CouchDB
  • Aerospike
  • Redis
  • Cassandra
  • Objectivity Infinite Graph

برای این که SQL به صورت بخشی از کسب و کار فوق لحاظ گردیده و ضمنا از مزایای noSQL استفاده شود و زیرساخت رابطه‌ای و Relational لایه‌ی Data برنامه‌نویسی فرمال از میان نرود کافی است از معماری پایگاه داده‌ی توزیع شده جهت ذخیره‌سازی و بازیابی اطلاعات استفاده کرد که الزاما متجانس نیست. پایگاه داده‌های توزیع شده اساساً سیستم‌های توزیع شده‌ای به حساب می‌آیند که در آن‌ها دستگاه‌های محاسباتی یا عنصرهای پردازشی (Processing Elements | PE) از طریق یک شبکه (مثل اینترنت) با هم ارتباط برقرار می‌کنند و با هم هماهنگ و همگام می‌شوند تا قابلیت‌های عملکردی بسیاری از اجزا را به عنوان عملکردی واحد و یکتا به کاربر ارائه دهند. به خاطر پایگاه داده توزیع شده است که کاربران فیسبوک می‌توانند هر وقت دوست داشته باشند پست ارسال کنند یا پست‌های دیگران را بپسندند و به اشتراک بگذارند. دیتابیس فیسبوک و اکثر سرویس‌های این چنینی نیز در تعداد زیادی از نقاط جغرافیایی مختلف پراکنده شده‌اند تا به کاربران تجربه دسترسی یگانه و مرکزی ارائه دهند.

با فعال‌سازی گرفتن خروجی json از SQL Server امکان الحاق محصول پایگاهی ماکروسافت به مجموعه‌ی بی‌نهایت وسیع noSQL فراهم می‌شود. SQL Server 2016 قابلیت جدید برای دریافت داده های یک جدول در قالب JSON را دارد. با توجه به این موضوع که امروزه بسیار از وب سرویس ها با داده های JSON کار می کنند، وجود چنین قابلیتی می تواند بسیاری از Action Method هایی که درون Controller ها تعریف شده و کلاینت ها توسط AJAX به آنها درخواست می دهند را ساده کند. در واقع، Action Method ها می توانند در قالب Wrapper هایی ساده برای کوئری های SQL ایفای نقش کنند.

پشتیبانی از JSON در SQL Server 2016 از کلیدواژه ها و توابعی تشکیل شده است که می توانید از آنها در کوئری ها استفاده کنید. علی رغم روشی که در کار با XML در SQL Server وجود دارد، برای کار با JSON، نوع داده ای خاصی (مثلاً JSON) وجود ندارد. برای استفاده از JSON، کافی است که داده های خود را به در ستون های با نوع داده ای VarChar(Max) ذخیره کنید. نکته ی جالب همین است که در صورت عدم وجود نوع داده ای JSON، قابلیت کوئری گرفتن از داده های JSON وجود دارد.

کد زیر Action Method ی را نشان می‌دهد که با استفاده از دستورات ساده‌ی ADO.NET که در قالب TSQL یک Command را به سمت سرور فرستاده و داده‌ها را در قالب JSON دریافت می‌نمایند. کلمه ی کلیدی FOR JSON AUTO در پایان دستورات باعث می شود که داده‌ها به صورت JSON برگردانده شوند.

Public Function GetJson() As String
Dim cn As SqlConnection
Dim cmd As SqlCommand
Dim rdr As SqlDataReader
Dim res As String = String.Empty

cn = New SqlConnection("…connection string…")
cmd = cn.CreateCommand()
cmd.CommandText = "Select * " &
" From Customers " &
"FOR JSON AUTO;"
cn.Open()
rdr = cmd.ExecuteReader()
rdr.Read()
res = rdr(0)
cn.Close()

Return res
End Function
صفحه‌ی شخصی<br/>توئیتر
sql serverjsonnosqldatabase
سیدابوالفضل موسوی
شاید از این پست‌ها خوشتان بیاید