2012-12-21 11 views
11

Pracowałem nad projektem generującym od 10 do 100 milionów wyników z symulacji, którą chciałbym przechowywać do przyszłych analiz. Istnieje kilka poziomów natury organizacji danych, np. W salach szkolnych Studenci, którzy biorą udział w testach, mają kilka różnych wskaźników wydajności.Najlepszy sposób na przechowywanie 10 - 100 milionów wyników symulacji z .net (SQL vs. plik płaski)

Wygląda na to, że moje dane są linią graniczną pod względem możliwości dopasowania do pamięci naraz (biorąc pod uwagę obliczenia symulacji, wymaga to dużej ilości danych w pamięci do wykonania obliczeń), ale nie natychmiast potrzebuję, aby wszystkie dane były dostępne dla mojego programu.

Zastanawiam się, czy lepiej byłoby wyprowadzać obliczone wartości do bazy danych SQL lub płaskiego pliku tekstowego. Szukam porady, które podejście może być szybsze/łatwiejsze w utrzymaniu (lub jeśli masz alternatywną propozycję przechowywania danych, do których jestem otwarty).

Nie muszę mieć możliwości udostępniania danych innym osobom ani martwić się o dostęp do danych w kolejnych latach. Potrzebuję tylko wygodnego sposobu na uniknięcie regeneracji symulacji za każdym razem, gdy chcę przeprowadzić modyfikację analizy wartości.

Odpowiedz

3

Z góry, wygląda na to, że lepiej byłoby zapisać wyniki każdego uruchomienia symulacji w płaskim pliku. Nie musi to być plik tekstowy - może to być plik binarny.

Po jednym lub kilku uruchomieniach symulacji pliki można odczytywać i umieszczać w hurtowni danych w celu późniejszej analizy.

+2

Jeśli dane są w .NET obiektów Binary serializacji może działać magicznie. – SWeko

4

Zastanowiłbym się nad wykorzystaniem bazy danych - 100 milionów plików jest zbyt dużo dla systemu plików bez pewnego schematu klasyfikacji, podczas gdy baza danych może z łatwością obsłużyć wiele wierszy. Możesz po prostu serializować dane wyjściowe do kolumny BLOB, więc nie musisz jej mapować. Ponadto należy wziąć pod uwagę, że SQL Server ma numer file stream access, więc może to być podejście hybrydowe, w którym SQL zarządza plikami.

2

Szybkość tworzenia kopii zapasowej dla ładowania danych z serwera RDBMS do pamięci wynosi około 10 000 rekordów na sekundę. Jeśli masz 100M rekordów i jeśli musisz użyć wszystkich danych w pewnym momencie, to zajmiesz mniej więcej trzy godziny, aby załadować dane. To jest przed wykonaniem jakichkolwiek obliczeń!

Zwykłe pliki mogą być o kilka rzędów szybsze. Możesz uzyskać całkiem szybko dzięki plikowi tekstowemu; przejście binarne poprawiłoby twoją szybkość nieco kosztem czytelności twojego pliku danych.

Powiązane problemy