Efektywny zapis danych do pliku

0

Hej - od razu: jestem amatorem, koduję hobbystycznie, więc raczej mam poważne dziury w wiedzy :)

Mam listę kilku tysięcy objektów, z czego każdy przechowuje około 20-30 zmiennych.
Obecnie pliki zapisuję jako XML:

                XmlDocument xmlDocument = new XmlDocument();
                XmlSerializer serializer = new XmlSerializer(data.GetType());
                using (MemoryStream stream = new MemoryStream())
                {
                    serializer.Serialize(stream, data);
                    stream.Position = 0;
                    xmlDocument.Load(stream);
                    xmlDocument.Save(path);
                }

Problem w tym, że plik wsadowy jest wielkości 1.5MB (ok. 60 tys linii).
Plik XML jest przejrzysty i może służyć do kontroli poprawności wprowadzenia danych, ale mam wrażenie że konsumuje on "nieco" za dużo miejsca.

Jaką inną formę zapisu plików byście polecali, aby plik danych po serializacji zajmował jak najmniej miejsca?

0

Do czego w ogóle tego używasz? Czy obiekty zmieniają stan?
Osobiście to użyłbym do tego bazy danych

0

Używasz DOM do zapisu/czytania xml-a.
Zastanów się, czy nie lepiej użyć SAX, które będzie mniej zasobożerne is szybsze (ale sprawia więcej kłopotów niektórym programistom).

Najczyściej xml-e sie kompresuje, bo jest dużo nadmiarowych danych.

3

O ile nie uruchamiasz swojego kodu na Atmedze, to 1.5MB jeszcze nie podpada pod big data :-)

Mimo wszystko - zakładając, że nie chcesz zmieniać rodzaju formatu (na jakieś Protobuf albo cokolwiek, co teraz jest modne), to imho kompresja będzie zarówno najprostsza w implementacji, jak i powinna całkiem sensownie zmniejszyć rozmiar pliku.

0
  1. 1,5 MB to nie jest jeszcze jakoś szczególnie dużo
  2. oprócz XMLa masz jeszcze inne "ludzkie" np. JSONa czy YAMLa

1 użytkowników online, w tym zalogowanych: 0, gości: 1