Napisałem program, który przechowuje dane i uznałem, że nie ma potrzeby bawić się w bazę danych, więc użyłem serializacji.
Wszystko działa ok, tylko zastanawiam się, co by tu zrobić, aby zabezpieczyć dane. Nie mogą być one utracone np. po roku wypełniania bazy. (Nie chodzi mi o backup, w razie awarii sprzętu, tylko w razie, gdyby serializacja źle przebiegła, jakiś błąd systemowy, nie wiem czy w trakcie serializacji i np. awarii prądu dobrze by się wszystko zapisało. Obecnie zapisuję stan kiedy wyko się metoda listenera closed, ale zamierzam zapisywać po wykonaniu każdej edycji w programie, a ciągłe nadpisywanie pliku chyba jest niezbyt fajne. Dlatego w bazie edytujemy tylko rekord i to plus.)
Mam kilka rozwiązań, ale żadne mi jakoś nie pasuje i liczę że może ktoś ma lepszy pomysł.
-
Zapisywanie na ftp pliku binarnego, ale klient może nie być podłączony do sieci. Zawsze można zapisywać na dysku i tylko później synchronizować, ale bardzo nie chciałbym się w to bawić. W kodzie można po dekompilacji znaleźć login i hasło (jara można utrudnić odkodować, ale nie zabezpieczyć), poza tym już lepiej byłoby użyć gdzieś zewnętrznej bazy danych, w co też nie chcę się bawić bo nie widzę takiej potrzeby, serializacja się sprawdza jak na razie.
-
Zapisywać i plikom dodawać w nazwie datę i czas co do sekundy, potem zawsze wczytywać najnowszy plik i w razie jakby któryś nie "wchodził" komunikat, że odzyskano dane dopiero z daty ... itd. i załadowanie najnowszego, który zadziała. Ma to jednak znaczną wadę, bo czasem w komputerze dzieją się dziwaczne rzeczy i data systemowa może zostać przestawiona, komputer może ześwirować itd. Ew. można wprowadzać zamiast daty ID, ale boje się żeby nie przekroczyło to kiedyś 255 znaków (choć to mało prawdopodobne) i zawsze można można kiedyś odliczać od nowa, nie wiem też jakie są ograniczenia w tym względzie w innych systemach niż win7.
Inna sprawa to zmuszanie użytkownika do backupu. Czy robi się coś takiego? Np. po tygodniu przy wyłączeniu programu przypominamy o funkcji "export" i by wysłał to sobie na pendrive'a?
Czekam na propozycje.