آگنوستیک(داده)

در رایانش، به یک نرم‌افزار یا دستگاه، آگنوستیک (بی تعهد، ندانم گرا، مستقل) یا داده آگنوستیک (مستقل از داده) گفته می‌شود اگر روش یا فرمت انتقال داده‌ها در آن نرم‌افزار یا دستگاه هیچ ربطی به عملکرد داخلیش نداشته باشد. این بدان معنی است که دستگاه یا نرم‌افزار می‌تواند داده‌ها را در چندین قالب یا از چندین منبع دریافت کند و همچنان آن داده‌ها را به‌طور مؤثری پردازش کند.

نامستقل از داده چیست؟ 
بسیاری از دستگاه‌ها یا برنامه‌ها برای پردازش داده‌ها، نیاز به ارائه آن‌ها در یک قالب خاص دارند. به عنوان مثال، دستگاه‌های اپل معمولاً نیاز به دانلود برنامه‌ها از اپ استور خود دارند. این یک روش نامستقل از داده است، زیرا از یک نوع فایل مشخص استفاده می‌کند، از یک مکان خاص دانلود می‌شود و تا زمانی که این شرایط برآورده نشود کار نمی‌کند.

دستگاه‌ها و برنامه‌های نامستقل از داده می‌توانند مشکلاتی را ایجاد کنند. به عنوان مثال، اگر فایل شما حاوی نوع درستی از داده (مانند متن)، اما در قالب نادرستی باشد، ممکن است مجبور شوید برای استفاده از آن برنامه، فایل جدیدی ایجاد کرده و متن را به صورت دستی در قالب مناسب وارد کنید. به همین دلیل برنامه‌های مختلف تبدیل فایل وجود دارد، زیرا افراد برای استفاده مؤثر از فایل‌های خود باید ابتدا آن‌ها را به قالب دیگری تبدیل کنند.

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

دستگاه‌ها و برنامه‌ها می‌توانند با استفاده از یک قالب ذخیره‌سازی عمومی برای ایجاد، خواندن، به روزرسانی و حذف فایل‌ها، بیشتر مستقل از داده شوند. برنامه‌هایی مانند XML و JSON می‌توانند اطلاعات را به روشی مستقل ذخیره کنند. به عنوان مثال، XML مستقل از داده‌است و می‌تواند هر نوع اطلاعاتی را ذخیره کند. اگرچه اگر شما از تعاریف تبدیل داده (DTD) یا تعاریف XML Schema یا (XSD) برای تعیین این‌که چه داده‌هایی باید در کجا قرار بگیرند استفاده می‌کنید، این داده‌ها غیرمستقل می‌شوند و اگر نوع داده اشتباهی در یک فیلد وارد شود، خطا ایجاد می‌کند.

هنگامی که داده‌های خود را در قالب ذخیره‌سازی عمومی ذخیره کردید، این قالب می‌تواند به عنوان یک لایه همگام‌سازی موجودیت عمل کند. قالب ذخیره‌سازی عمومی می‌تواند با انواع مختلف برنامه‌ها رابطه داشته باشد، با روش استخراج داده‌ها، داده‌ها را به گونه ای قالب‌بندی می‌کند که هر برنامه‌ای بتواند آن‌ها را درک کند. این روش اجازه می‌دهد تا دو برنامه که به قالب‌های مختلف داده نیاز دارند به داده‌های یکسان دسترسی داشته باشند. چندین دستگاه و برنامه می‌توانند بدون خطاهای قالب‌بندی، اطلاعات یکسانی را از همان محل ذخیره‌سازی ایجاد، بخوانند، به روز کنند و حذف کنند (CRUD).

هنگامی که چندین برنامه به یک رکورد یکسان دسترسی دارند، ممکن است دارای فیلدهای تعریف شده متفاوتی برای همان نوع مفهوم یکسان باشند. در مواردی که فیلدها به‌طور متفاوتی برچسب گذاری شده‌اند اما حاوی داده‌های یکسان هستند، برنامه، اطلاعاتی را برداشت می‌کند که تضمین می‌کنند که که از داده‌های درستی استفاده شده‌است. اگر یک برنامه حاوی فیلدها و اطلاعاتی باشد که برنامه دیگری ندارد، می‌توان آن فیلدها را در رکورد ذخیره کرد تا فقط توسط آن برنامه قابل فراخوانی باشد، اما توسط برنامه‌های دیگر نادیده گرفته شود. از آنجا که لایه همگام‌سازی موجودیت، مستقل از داده‌است، می‌توان بدون نگرانی در مورد کد نویسی مجدد کل پایگاه داده، فیلدهای اضافی را اضافه کرد و مفاهیم ایجاد شده در برنامه‌های دیگر (که شامل آن فیلد نیستند) به خوبی کار کنند.

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

داشتن ابزارها و برنامه‌های مستقل از داده، به شما امکان می‌دهد بدون نیاز به تبدیل آن داده‌ها، داده‌ها را به راحتی بین آنها انتقال دهید. شرکت‌هایی مانند Great Ideaz با ذخیره‌سازی داده‌ها در یک لایه همگام‌سازی موجودیت، خدمات مستقل از داده را ارائه می‌دهند. این لایه به عنوان یک لایه سازگاری عمل می‌کند، زیرا دستورهای TSQL می‌توانند عملیات بازیابی، به روز رسانی، مرتب‌سازی و نوشتن داده‌ها را بدون توجه به قالب استفاده شده بر روی داده‌ها انجام دهند. این لایه همچنین به شما امکان می‌دهد داده را بین چندین برنامه همگام‌سازی کنید، زیرا همه برنامه‌ها می‌توانند داده‌ها را از همان مکان واکشی کنند. این کار از مشکلات سازگاری بین برنامه‌های مختلفی که باید به داده‌های یکسان دسترسی داشته باشند جلوگیری می‌کند و همچنین باعث کاهش تکرار داده‌ها می‌شود.

مزایای استقلال از داده 
نگه داشتن دستگاه‌ها و برنامه‌ها به‌صورت مستقل از داده، مزایای آشکاری دارد.

از آن‌جا که داده‌ها در قالب مستقل ذخیره می‌شوند، نیازی به پیاده‌سازی روش‌های مختلف در سطح کدنویسی (هارد کد) برای کار کردن با انواع مختلف داده‌ها نیست. یک جدول با اطلاعات راجع به سگ‌ها و یک جدول با اطلاعات راجع به گربه‌ها به همین ترتیب قابل مدیریت هستند. شما تعاریف فیلد و محتوای فیلد را از قالب مستقل از داده خود استخراج کرده و بر اساس تعاریف فیلد نمایش می‌دهید. از آن‌جا که شما از کد مشابهی برای مفاهیم مختلفی که می‌خواهید CRUD کنید، استفاده می‌کنید، مقدار کد به‌طور قابل توجهی کاهش می‌یابد و آن‌چه باقی می‌ماند به طور گسترده‌ای با هر مفهومی که از لایه هماهنگ‌سازی موجودیت استخراج می‌کنید، آزمایش می‌شود.

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

خود داده‌ها فقط زمانی باید مورد تفکیک قرار گیرند که به روشی معین روی آن‌ها عملی انجام شده‌است یا باید نمایش داده شوند. اگر داده‌ها بین دستگاه‌ها یا پایگاه داده منتقل می‌شوند، نیازی به تفسیر به عنوان یک شی خاص نیست. هر زمانی که داده‌ها بتوانند به عنوان مستقل مورد استفاده قرار بگیرند، کد نویسی ساده‌تر می‌شود، چرا که فقط با یک نوع (نوع مستقل از داده) سر و کار دارد تا چندین نوع (png، pdf و غیره). هنگامی که داده‌ها باید نمایش داده شوند یا بر اساس آن‌ها عمل شود، براساس تعاریف فیلدها و اطلاعات قالب‌بندی تفسیر می‌شوند و در اسرع وقت به قالب مستقل از داده برگردانده شوند تا تعداد انواع متفاوتی که باید مدیریت شوند کاهش یابد.

خطرات استقلال از داده 
با این وجود، هنگام تلاش برای مستقل از داده ساختن یک دستگاه یا برنامه، مشکلاتی نیز وجود دارند.

از آنجا که فقط یک قطعه کد برای عملیات CRUD استفاده می‌شود (صرف نظر از نوع مفهوم)، یک نقطه شکست یکتا وجود دارد. اگر آن کد خراب شود، کل سیستم خراب می‌گردد. البته این خطر قابل کاهش است زیرا کد مرتباً مورد آزمایش قرار می‌گیرد (هر بار که یک رکورد ذخیره یا بازیابی می‌شود از آن استفاده می‌شود که در واقع یک نوع صحت سنجی اتفاق می‌افتد).

علاوه بر این، رسانه‌های مستقل از داده می‌توانند زمان بارگذاری شما را افزایش دهند، زیرا باید به دنبال تعاریف فیلد و قالب نمایش و همچنین داده‌های خاص نمایش داده شده جستجو کنند. سرعت فراخوانی را می‌توان با پیش-خرد کردن داده‌ها بهبود داد. این روش به جای این‌که همزمان با داده‌ها، فیلدها و اطلاعات قالب‌بندی را استخراج کند، از کپی رکورد همراه با داده‌هایی که قبلاً برای نمایه‌سازی (ایندکس کردن) فیلدها استخراج شده‌اند، استفاده می‌کند. در حالی که این کار سرعت را بهبود می‌بخشد، اما یک عنصر غیرمستقل داده‌ای را به فرایند اضافه می‌کند. با این حال، می‌توان آن را به راحتی از طریق تولید کد ایجاد کرد.

منابع 

علوم رایانه
داده‌های رایانه‌ای