آگنوستیک(داده)
در رایانش، به یک نرم‌افزار یا دستگاه، آگنوستیک (بی تعهد، ندانم گرا، مستقل) یا داده آگنوستیک (مستقل از داده) گفته می‌شود اگر روش یا فرمت انتقال داده‌ها در آن نرم‌افزار یا دستگاه هیچ ربطی به عملکرد داخلیش نداشته باشد. این بدان معنی است که دستگاه یا نرم‌افزار می‌تواند داده‌ها را در چندین قالب یا از چندین منبع دریافت کند و همچنان آن داده‌ها را به‌طور مؤثری پردازش کند.
بسیاری از دستگاه‌ها یا برنامه‌ها برای پردازش داده‌ها، نیاز به ارائه آنها در یک قالب خاص دارند. به عنوان مثال، دستگاه‌های اپل معمولاً نیاز به دانلود برنامه‌ها از اپ استور خود دارند. این یک روش نامستقل از داده‌است، زیرا از یک نوع فایل مشخص استفاده می‌کند، از یک مکان خاص دانلود می‌شود و تا زمانی که این شرایط برآورده نشود کار نمی‌کند.
دستگاه‌ها و برنامه‌های نامستقل از داده می‌توانند مشکلاتی را ایجاد کنند. به عنوان مثال، اگر فایل شما حاوی نوع درستی از داده (مانند متن)، اما در قالب نادرستی باشد، ممکن است مجبور شوید برای استفاده از آن برنامه، فایل جدیدی ایجاد کرده و متن را به صورت دستی در قالب مناسب وارد کنید. به همین دلیل برنامه‌های مختلف تبدیل فایل وجود دارد، زیرا افراد برای استفاده مؤثر از فایل‌های خود باید ابتدا آنها را به قالب دیگری تبدیل کنند.
دستگاه‌ها و برنامه‌های مستقل از داده برای حل این مشکلات به روش‌های مختلف کار می‌کنند. دستگاه‌ها می‌توانند با فایلها به یک روش رفتار کنند، صرف نظر از این که این فایلها از طریق اینترنت دانلود شوند یا از طریق USB یا انواع دیگر کابلها دریافت گرذند.
دستگاه‌ها و برنامه‌ها می‌توانند با استفاده از یک قالب ذخیره‌سازی عمومی برای ایجاد، خواندن، به روزرسانی و حذف فایلها، بیشتر مستقل از داده شوند. برنامه‌هایی مانند XML و JSON می‌توانند اطلاعات را به روشی مستقل ذخیره کنند. به عنوان مثال، XML مستقل از داده‌است و می‌تواند هر نوع اطلاعاتی را ذخیره کند. اگرچه اگر شما از تعاریف تبدیل داده (DTD) یا تعاریف اسکیمای XML یا (XSD) برای تعیین اینکه چه داده‌هایی باید در کجا قرار بگیرند استفاده می‌کنید، این داده‌ها غیرمستقل می شوندو اگر نوع داده اشتباهی در یک فیلد وارد شود، خطا ایجاد می‌کند.
هنگامی که داده‌های خود را در قالب ذخیره‌سازی عمومی ذخیره کردید، این قالب می‌تواند به عنوان یک لایه همگام سازی موجودیت عمل کند. قالب ذخیره‌سازی عمومی می‌تواند با انواع مختلف برنامه‌ها رابطه داشته باشد، با روش استخراج داده‌ها، داده‌ها را به گونه ای قالب بندی می‌کند که هر برنامه ای بتواند آنها را درک کند. این روش اجازه می‌دهد تا دو برنامه که به قالب‌های مختلف داده نیاز دارند به داده‌های یکسان دسترسی داشته باشند. چندین دستگاه و برنامه می‌توانند بدون خطاهای قالب بندی، اطلاعات یکسانی را از همان محل ذخیره‌سازی ایجاد، بخوانند، به روز کنند و حذف کنند (CRUD).
هنگامی که چندین برنامه به یک رکورد یکسان دسترسی دارند، ممکن است دارای فیلدهای تعریف شده متفاوتی برای همان نوع مفهوم یکسان باشند. در مواردی که فیلدها بطور متفاوتی برچسب گذاری شده‌اند اما حاوی داده‌های یکسان هستند، برنامه، اطلاعاتی را برداشت می‌کند که تضمین می‌کنند که که از داده‌های درستی استفاده شده‌است. اگر یک برنامه حاوی فیلدها و اطلاعاتی باشد که برنامه دیگری ندارد، می‌توان آن فیلدها را در رکورد ذخیره کرد تا فقط توسط آن برنامه قابل فراخوانی باشد، اما توسط برنامه‌های دیگر نادیده گرفته شود. از آنجا که لایه همگام سازی موجودیت، مستقل از داده‌است، می‌توان بدون نگرانی در مورد کد نویسی مجدد کل پایگاه داده، فیلدهای اضافی را اضافه کرد و مفاهیم ایجاد شده در برنامه‌های دیگر (که شامل آن فیلد نیستند) به خوبی کار کنند.
از آنجا که قالب بندی اطلاعات توسط برنامه استخراج کننده بر داده‌ها اعمال می‌شود، می‌توان قالب را برای دستگاه یا برنامه استخراج و نمایش آن داده سفارشی کرد؛ بنابراین اطلاعات استخراج شده از لایه همگام سازی موجودیت، بدون در نظر گرفتن دستگاه یا برنامه مورد استفاده، می‌توانند به صورت پویا برای نمایش در دستگاه کاربر ارائه شوند.
داشتن ابزارها و برنامه‌های مستقل از داده، به شما امکان می‌دهد بدون نیاز به تبدیل آن داده‌ها، داده‌ها را به راحتی بین آنها انتقال دهید. شرکت‌هایی مانند Great Ideaz با ذخیره‌سازی داده‌ها در یک لایه همگام سازی موجودیت، خدمات مستقل از داده را ارائه می‌دهند. این لایه به عنوان یک لایه سازگاری عمل می‌کند، زیرا دستورات TSQL می‌توانند عملیات بازیابی، به روز رسانی، مرتب‌سازی و نوشتن داده‌ها را بدون توجه به قالب استفاده شده بر روی داده‌ها انجام دهند. این لایه همچنین به شما امکان می‌دهد داده را بین چندین برنامه همگام سازی کنید، زیرا همه برنامه‌ها می‌توانند داده‌ها را از همان مکان واکشی کنند. این کار از مشکلات سازگاری بین برنامه‌های مختلفی که باید به داده‌های یکسان دسترسی داشته باشند جلوگیری می‌کند و همچنین باعث کاهش تکرار داده‌ها می‌شود.
نگه داشتن دستگاه‌ها و برنامه‌ها بصورت مستقل از داده، مزایای آشکاری دارد.
از آنجا که داده‌ها در قالب مستقل ذخیره می‌شوند، نیازی به پیاده‌سازی روشهای مختلف در سطح کدنویسی (هارد کد) برای کار کردن با انواع مختلف داده‌ها نیست. یک جدول با اطلاعات راجع به سگ‌ها و یک جدول با اطلاعات راجع به گربه‌ها به همین ترتیب قابل مدیریت هستند. شما تعاریف فیلد و محتوای فیلد را از قالب مستقل از داده خود استخراج کرده و بر اساس تعاریف فیلد نمایش می‌دهید. از آنجا که شما از کد مشابهی برای مفاهیم مختلفی که می‌خواهید CRUD کنید، استفاده می‌کنید، مقدار کد به‌طور قابل توجهی کاهش می‌یابد و آنچه باقی می ماندبه طور گسترده‌ای با هر مفهومی که از لایه هماهنگ سازی موجودیت استخراج می‌کنید، آزمایش می‌شود.
تعاریف فیلدها و قالب بندی فیلد را می‌توان در لایه همگام سازی موجودیت با داده‌هایی که روی آنها کار می‌کنند ذخیره کرد. با این کار می‌توانید بدون نیاز به رمزگذاری و کامپایل برنامه‌ها، فیلدها و قالب بندی را سریع و آسان تغییر دهید. سپس داده‌ها و قالب بندی توسط کدی که برای استخراج داده‌ها و اطلاعات قالب بندی استفاده می‌شود، به صورت پویا تولید می‌شوند.
خود داده‌ها فقط زمانی باید مورد تفکیک قرار گیرند که به روشی معین روی آنها عملی انجام شده‌است یا باید نمایش داده شوند. اگر داده‌ها بین دستگاه‌ها یا پایگاه داده منتقل می‌شوند، نیازی به تفسیر به عنوان یک شی خاص نیست. هر زمانی که داده‌ها بتوانند به عنوان مستقل مورد استفاده قرار بگیرند، کد نویسی ساده‌تر می‌شود، چرا که فقط با یک نوع (نوع مستقل از داده) سر و کار دارد تا چندین نوع (png، pdf و غیره). هنگامی که داده‌ها باید نمایش داده شوند یا بر اساس آنها عمل شود، براساس تعاریف فیلدهاو اطلاعات قالب بندی تفسیر می‌شوند و در اسرع وقت به قالب مستقل از داده برگردانده شوند تا تعداد انواع متفاوتی که باید مدیریت شوند کاهش یابد.
با این وجود، هنگام تلاش برای مستقل از داده ساختن یک دستگاه یا برنامه، مشکلاتی نیز وجود دارند.
از آنجا که فقط یک قطعه کد برای عملیات CRUD استفاده می‌شود (صرف نظر از نوع مفهوم)، یک نقطه شکست یکتا وجود دارد. اگر آن کد خراب شود، کل سیستم خراب می‌گردد. البته این خطر قابل کاهش است زیرا کد مرتباً مورد آزمایش قرار می‌گیرد (هر بار که یک رکورد ذخیره یا بازیابی می‌شود از آن استفاده می‌شود که در واقع یک نوع صحت سنجی اتفاق میفتد).
علاوه بر این، رسانه‌های مستقل از داده می‌توانند زمان بارگذاری شما را افزایش دهند، زیرا باید به دنبال تعاریف فیلد و قالب نمایش و همچنین داده‌های خاص نمایش داده شده جستجو کنند. سرعت فراخوانی را می‌توان با پیش -خرد کردن داده‌ها بهبود داد. این روش به جای اینکه همزمان با داده‌ها، فیلدها و اطلاعات قالب بندی را استخراج کند، از کپی رکورد همراه با داده‌هایی که قبلاً برای نمایه سازی (ایندکس کردن) فیلدها استخراج شده‌اند، استفاده می‌کند. در حالی که این کار سرعت را بهبود می‌بخشد، اما یک عنصر غیر مستقل داده‌ای را به فرایند اضافه می‌کند. با این حال، می‌توان آن را به راحتی از طریق تولید کد ایجاد کرد.