Mogę wymyślić trzy rozwiązania - EAV, XML i rzadkie kolumny. Ten ostatni jest specyficzny dla dostawcy i może nie być dla Ciebie przydatny.
Niezależnie od wybranej metody, możesz rozważyć zapisanie oryginalnych danych żądania w surowym formacie, w pliku tabeli lub pliku płaskim. Ułatwi to wypróbowanie nowych sposobów przechowywania danych, pozwoli na ponowne załadowanie danych, jeśli odkryjesz błąd w sposobie analizowania żądań, i zaoferuje możliwości analizowania żądań interfejsu API przy użyciu przetwarzania wsadowego lub „dużych zbiorów danych” narzędzia, jeśli okaże się, że hurtownia danych nie jest w stanie skutecznie poradzić sobie z danymi.
Uwagi dotyczące EAV
EAV / KVS, jak to opisano powyżej, prawdopodobnie będzie najprostszą implementacją.
Niestety będzie to również bardzo kosztowne - aby uzyskać wydajne zapytania dotyczące często używanych kluczy, musisz mieć indeksy w kolumnie kluczy, które mogą ulec bardzo fragmentacji. Zapytanie o określone klucze byłoby niezwykle kosztowne.
Możesz być w stanie obniżyć koszty indeksowania lub skanowania indeksów, wspierając sklep EAV za pomocą zmaterializowanych widoków (obsługuje to wielu dostawców) w celu zapytania o klucze lub wartości, na których Ci zależy.
XML
Większość korporacyjnych systemów baz danych oferuje bardzo dojrzałą obsługę XML, w tym sprawdzanie poprawności, indeksowanie i zaawansowane zapytania.
Załadowanie żądania API do bazy danych jako XML zapewniłoby jedną krotkę na żądanie, co logicznie może być dla ciebie bardziej smaczne niż posiadanie nieznanej liczby wierszy w tabeli EAV.
To, czy jest to wydajne, zależy w dużej mierze od dostawcy RDBMS i wdrożenia.
Największym minusem jest to, że jest to prawdopodobnie jedyny sposób zarządzania danymi, który jest bardziej skomplikowany niż manipulowanie ciągiem pierwotnego żądania!
Rzadkie kolumny / tradycyjne tabele
Możliwe, że możesz załadować swoje dane do tradycyjnej struktury tabeli, z jedną kolumną na klucz.
Funkcja rzadkich kolumn programu SQL Server jest doskonałą alternatywą dla sklepu EAV. Tabela z rzadkimi kolumnami zachowuje się tak samo jak normalna tabela, z tym wyjątkiem, że może mieć do 30 000 kolumn, a wartości NULL w rzadkich kolumnach nie zajmują miejsca w tabeli.
Połączenie ich z Filtrowanymi Indeksami (kolejna funkcja specyficzna dla SQL Server) może zapewnić niezwykle wydajną alternatywę dla sklepu EAV, jeśli często pytasz o kilka konkretnych kolumn i / lub wartości.
Używanie tradycyjnej tabeli z innymi dostawcami może być opłacalne - IBM obsługuje ponad 700 kolumn na tabelę, a Oracle około 1000, a funkcje takie jak kompresja lub przetwarzanie przez Oracle wartości końcowych zer może oznaczać, że możesz dość skutecznie przechowywać dane API.
Oczywistym minusem tego podejścia jest to, że po dodaniu nowych kluczy do interfejsu API konieczne będzie odpowiednie dostosowanie schematu.