agnostyk (dane)
W informatyce mówi się, że urządzenie lub program jest agnostyczny lub niezależny od danych , jeśli metoda lub format transmisji danych nie ma znaczenia dla funkcji urządzenia lub programu. Oznacza to, że urządzenie lub program może odbierać dane w wielu formatach lub z wielu źródeł i nadal skutecznie je przetwarzać.
Definicja
Wiele urządzeń lub programów wymaga przedstawienia danych w określonym formacie w celu ich przetworzenia. Na przykład firmy Apple Inc zazwyczaj wymagają pobrania aplikacji ze sklepu App Store . Jest to metoda niezależna od danych, ponieważ wykorzystuje określony typ pliku, pobrany z określonej lokalizacji i nie działa, jeśli te wymagania nie są spełnione.
Urządzenia i programy niezależne od danych mogą powodować problemy. Na przykład, jeśli plik zawiera właściwy typ danych (taki jak tekst), ale w niewłaściwym formacie, może być konieczne utworzenie nowego pliku i ręczne wprowadzenie tekstu we właściwym formacie, aby móc korzystać z tego programu. Istnieją różne programy do konwersji plików, ponieważ ludzie muszą konwertować swoje pliki do innego formatu, aby móc z nich efektywnie korzystać.
Realizacja
Urządzenia i programy niezależne od danych działają w celu rozwiązania tych problemów na różne sposoby. Urządzenia mogą traktować pliki w ten sam sposób, niezależnie od tego, czy są pobierane przez Internet, czy przesyłane przez USB lub inny kabel.
Urządzenia i programy mogą stać się bardziej niezależne od danych, używając ogólnego formatu przechowywania do tworzenia, odczytywania, aktualizowania i usuwania plików. Formaty takie jak XML i JSON mogą przechowywać informacje w sposób niezależny od danych. Na przykład XML jest niezależny od danych, ponieważ może zapisywać dowolny typ informacji. Jeśli jednak użyjesz definicji przekształcania danych (DTD) lub definicji schematu XML (XSD) do zdefiniowania, które dane powinny zostać umieszczone, nie będą one niezależne od danych; generuje błąd, jeśli w polu zostanie umieszczony niewłaściwy typ danych.
Po zapisaniu danych w ogólnym formacie przechowywania to źródło może działać jako warstwa synchronizacji encji. Ogólny format przechowywania może współpracować z wieloma różnymi programami, przy czym metoda ekstrakcji danych formatuje dane w sposób zrozumiały dla konkretnego programu. Pozwala to dwóm programom, które wymagają różnych formatów danych, na dostęp do tych samych danych. Wiele urządzeń i programów może tworzyć, odczytywać, aktualizować i usuwać ( CRUD ) te same informacje z tej samej lokalizacji przechowywania bez błędów formatowania.
Gdy wiele programów uzyskuje dostęp do tych samych rekordów, mogą one mieć różne zdefiniowane pola dla tego samego typu pojęcia. Tam, gdzie pola są różnie oznaczone, ale zawierają te same dane, program pobierający informacje może zapewnić, że zostaną użyte prawidłowe dane. Jeśli jeden program zawiera pola i informacje, których nie ma inny, pola te można zapisać w rekordzie i pobrać dla tego programu, ale zignorować je przez inne programy. Ponieważ warstwa synchronizacji jednostek jest niezależna od danych, dodatkowe pola można dodawać bez obawy o przekodowanie całej bazy danych, a koncepcje utworzone w innych programach (które nie zawierają tego pola) są w porządku.
Ponieważ formatowanie informacji jest narzucane na dane przez program, który je wyodrębnia, format można dostosować do urządzenia lub programu, który wyodrębnia i wyświetla te dane. Informacje wyodrębnione z warstwy synchronizacji jednostek mogą być zatem dynamicznie renderowane w celu wyświetlenia na urządzeniu użytkownika, niezależnie od używanego urządzenia lub programu.
Posiadanie urządzeń i programów niezależnych od danych umożliwia łatwe przesyłanie danych między nimi bez konieczności konwertowania tych danych. Firmy takie jak Great Ideaz świadczą usługi niezależne od danych, przechowując dane w warstwie synchronizacji jednostek. Działa to jako warstwa kompatybilności, ponieważ TSQL mogą pobierać, aktualizować, sortować i zapisywać dane niezależnie od zastosowanego formatu. Umożliwia także synchronizację danych między wieloma aplikacjami, ponieważ wszystkie aplikacje mogą pobierać dane z tej samej lokalizacji. Zapobiega to problemom ze zgodnością między różnymi programami, które muszą uzyskiwać dostęp do tych samych danych, a także ogranicza replikację danych.
Korzyści
Utrzymywanie urządzeń i programów w jak największym stopniu niezależnymi od danych ma pewne wyraźne zalety. Ponieważ dane są przechowywane w formacie agnostycznym, programiści nie muszą na stałe kodować sposobów radzenia sobie z różnymi rodzajami danych. W ten sam sposób można potraktować tabelę z informacjami o psach i tabelę z informacjami o kotach; wyodrębnić definicje pól i zawartość pól z niezależnego od danych formatu przechowywania danych i wyświetlić je na podstawie definicji pól. Używając tego samego kodu dla różnych koncepcji CRUD , ilość kodu jest znacznie zmniejszona, a to, co pozostaje, jest testowane z każdą koncepcją wyodrębnioną z warstwy synchronizacji encji.
Definicje pól i formatowanie mogą być przechowywane w warstwie synchronizacji jednostek z danymi, na których działają. Umożliwia zmianę pól i formatowania bez konieczności kodowania i kompilowania programów. Dane i formatowanie są następnie generowane dynamicznie przez kod używany do wyodrębniania danych i informacji o formatowaniu.
Same dane należy odróżnić tylko wtedy, gdy są przetwarzane lub wyświetlane w określony sposób. Jeśli dane są przesyłane między urządzeniami lub bazami danych, nie muszą być interpretowane jako konkretny obiekt. Ilekroć dane można traktować jako agnostyczne, kodowanie jest uproszczone, ponieważ ma do czynienia tylko z jednym przypadkiem (przypadek niezależny od danych), a nie wieloma ( png , pdf itp.). Gdy dane muszą zostać wyświetlone lub należy na nich wykonać działanie, są one interpretowane na podstawie definicji pól i informacji o formatowaniu oraz przywracane do formatu niezależnego od danych tak szybko, jak to możliwe, aby zmniejszyć liczbę indywidualnych przypadków, które należy uwzględnić.
Ryzyka
Istnieje jednak kilka problemów związanych z próbą uczynienia urządzenia lub programu niezależnymi od danych. Ponieważ tylko jeden fragment kodu jest używany do CRUD (niezależnie od rodzaju koncepcji), istnieje pojedynczy punkt awarii . Jeśli ten kod się zepsuje, zepsuje się cały system. Ryzyko to jest ograniczone, ponieważ kod jest testowany wiele razy (ponieważ jest używany za każdym razem, gdy rekord jest przechowywany lub pobierany).
Ponadto nośniki danych niezależne od danych mogą zwiększyć szybkość ładowania, ponieważ kod musi wyszukiwać definicje pól i format wyświetlania, a także określone dane do wyświetlenia. Szybkość ładowania można poprawić, wstępnie niszcząc dane. Wykorzystuje to kopię rekordu z danymi już wyodrębnionymi do indeksowania pól, zamiast konieczności wyodrębniania pól i formatowania informacji w tym samym czasie co dane. Chociaż poprawia to szybkość, dodaje do procesu element niezależny od danych; można go jednak łatwo utworzyć poprzez generowanie kodu .