Chcę wyszukiwać masowo dane pogrupowane z wieloma kluczami w najszybszy możliwy sposób. Mam plik z tymi informacjami, ale chcę załadować go do pamięci. Pojemność pamięci nie stanowi problemu.Przeszukuj masywne dane pogrupowane wieloma kluczami C#
key1 | key2 | key3 | key4 | value1 | value2
-----|------|------|------|--------|--------
1 | 1 | 1 | 1 | str | 20
1 | 1 | 1 | 2 | str | 20
1 | 1 | 1 | 3 | str | 20
1 | 1 | 2 | 1 | str | 20
2 | 1 | 1 | 1 | str | 20
Mam spojrzał na niektórych kolekcjach ale jestem wciąż niepewny: http://blog.bodurov.com/Performance-SortedList-SortedDictionary-Dictionary-Hashtable
Może multiklawiszem słownika będzie lepiej, ponieważ uniknąć a wiele redundancji w kluczach.
public class MultiKeyDictionary<T1, T2, T3> : Dictionary<T1, Dictionary<T2, T3>>
key1 | key2 | key3 | key4 | value1 | value2
-----|------|------|------|--------|--------
1 | 1 | 1 | 1 | str | 20
| | | 2 | str | 20
| | | 3 | str | 20
| | 2 | 1 | str | 20
2 | 1 | 1 | 1 | str | 20
Nie będę szukać wszystkich kluczy, ale może 50% z nich. Jestem otwarty na nawet szalone sugestie.
Czy możesz zmaterializować wiele kopii danych niezależnie zoptymalizowanych dla każdego wyszukiwania, które zrobisz? Zindeksowane dla Key1, indeksowane dla key2, etc ... –
Czy możesz dokładniej określić konkretne zapytania, które musisz wykonać w odniesieniu do tych danych? – usr
Mogę podzielić dane za pomocą klawisza od lewej do prawej, ale do klawisza dostępu 2 Najpierw potrzebuję dostępu do klawisza 1. Zatem każdy prawy klawisz znajduje się w zbiorze od lewego klawisza. key4 znajduje się w key3, a key3 in key2 ... – Naster