Cześć,

kiedyś już pisałem podobny temat (kilka lat temu), ostatnio coraz częściej do niego wracam, na razie tylko myślami. Jest to pomysł na rozwiązanie problemów z dostępem do ustrukturyzowanych danych. Zależy mi na tym, aby osoby bardziej doświadczone napisały czy według nich taki system ma sens, a może już taki istnieje (działa, jest utrzymywany) - wtedy nie będę musiał tego pisać ;) Od ostatniej koncepcji zmieniło się to, że chcę wszystko opierać na gotowych interfejsach z schema.org - wcześniej chciałem żeby odpowiedzialność za schematy danych była również po stronie tego systemu (jeden z użytkowników tego forum wcześniej powiedział, że chcę stworzyć kolejny uniwersalny "format danych" dzięki czemu będzie ich na świecie n + 1, miał rację, może teraz też ktoś mnie do czegoś przekona).

Nazwa robocza to DataHub (od GitHub, tylko dla danych i trochę inaczej bo peer-to-peer). Nie skończyłem studiów, więc może w kręgach akademickich są już takie rozwiązania. Wiem, że Google przegląda internet w poszukiwaniu schematów z schema.org i buduje na ich podstawie bazy danych z których korzystamy bezpośrednio w wyszukiwarce. Ale Google to korporacja, a mi się marzy takie coś w rękach ludzi. Poza tym Google nie wystawia do tego darmowego API.

Wstęp

Dane są podstawą działania dzisiejszego świata. Większość systemów informatycznych opiera się na zbiorach danych. Duża ilość tych zbiorów jest wspólna, mimo wszystko musimy je pozyskiwać i normalizować na nowo. Często koszt pozyskania danych jest największą barierą do realizacji pomysłów. Organizacje często korzystają z gotowych, płatnych rozwiązań jak np. Google APIs. Koszt takich rozwiązań jest uzasadniony, dostawca musi dbać o poprawność danych jak i o infrastrukturę dzięki której będziemy mogli z nich korzystać.

Rozwiązaniem tej sytuacji jest stworzenie systemu bazodanowego który pozwalałby pracować nad zbiorami wspólnie, przez wszystkie jednostki je wykorzystujące. Pozwoliłby także na rozproszenie odpowiedzialności za infrastrukturę, dzięki czemu system nie byłby uzależniony od jednego dostawcy.

Infrastruktura

W skład infrastruktury będą wchodzić pojedyncze hosty oparte na modelu komunikacji peer-to-peer. Host nie będzie musiał przechowywać wszystkich danych, a jedynie te które są potrzebne osobie która zarządza hostem. Będą się stale wymieniać nowymi informacjami o przechowywanych zbiorach. Rozproszenie danych w takich sposób, aby były przechowywane na wielu hostach jednocześnie pozwoli zmniejszyć ruch sieciowy pomiędzy odległymi hostami i zapewni bezpieczeństwo wynikające z utraty danych.

Zbiory

Dane będą przechowywane za pomocą event store, oznacza to, że każda zmiana będzie przechowywana osobno - dzięki czemu będzie można łatwo je śledzić, przywracać lub odrzucać. Struktura zbiorów oparta będzie na schema.org, dzięki czemu wiele organizacji które już przechowują dane w ten sposób będą mogły w łatwy sposób skorzystać z nowego systemu. Host będzie decydować o tym jak dużo historycznych informacji ma przechowywać, jeżeli zależy nam na małej bazie danych możemy w ogóle nie przechowywać historii zmian a jedynie dane wynikowe (snapshots).

Pozyskiwanie danych

Dane mogą być pozyskiwane w sposób automatyczny lub ręczny. Sposób automatyczny będzie opierał się na żądaniu HTTP do API danego hosta. Sposób ręczny będzie polegał na korzystaniu z aplikacji które wspierają typy danych w zbiorach aplikacjami. Edycja map za pomocą pola tekstowego nie jest wygodna, więc jeżeli edytor ogólny natrafi na np. typ GeoShape (https://schema.org/GeoShape) uruchomi stosowny do niego edytor (jeżeli taki istnieje).

Dziękuję za doczytanie do końca, będę wdzięczny za podzielenie się opinią i linkami/cytatami/książkami/pracami które mogą potwierdzić lub obalić tezę, że taki system jest potrzebny.