Wpis z mikrobloga

Mam bazę w #sqlite i w niej 2 tabele - główną i powiązaną.
Na każdy wiersz w głownej przypada jakiś 1Kb danych w tabeli powiązanej. Te dane to rozbity na części json, bo tak łatwiej coś "znaleźć"

Teraz pytanie czy nie lepiej (ze względu np na flasha/ssd, wydajność) zrobić 1 główna tabelę, w której będzie cały json i go w uaktualniać?
O transakcji pamiętam.


#programowanie

Które rozwiązanie lepsze

  • 2 tabele 11.1% (1)
  • 1 tabela 33.3% (3)
  • inne rozwiązanie - w komentarzu 55.6% (5)

Oddanych głosów: 9

  • 10
Czuję się jak na elektrodzie. Jak zaznaczacie trzecią odpowiedź, to może zasugerujcie w komentarzu lepsze rozwiązanie i się nim podzielcie zamiast tylko wskazać, że zrobilibyście to lepiej lub inaczej.
@Kizio: sqlite jest domyślnie w uwp od Anniversary Update więc to dosyć oczywisty wybór. Jak bym chciał iść po bandzie, to mógłbym nawet trzymać w osobnych plikach (myślę, że niektóre z nich mogłyby mieć mniej niż 512 bajtów).
Bazy nosql też mają swój narzut danych.
Dzięki za wskazówkę
@anonimoweUWP:
1. Częściej zmieniasz dane, czy częściej wyszukujesz?
2. Szukasz tylko po danym fragmencie? Po danym polu obiektu? Po kilku polach jednocześnie?
3. Modyfikujesz też tylko dany fragment czy częściej całość?
4. Ile operacji odczytu/zapisu na sekundę oczekujesz/spodziewasz się?
5. Czy koszt "pocięcia" tego na osobne wiersze w drugiej tabeli nie jest czasem tutaj głównym "spowalniaczem"?
6. Jakiego zapytania używasz do przeszukiwania?
@vipe:
1. chyba częściej dodaje dane - na każdy wiersz w tabeli głownej będzie kilka zapisów do pomocniczej
2. wyszukuję wszystkie dane z określonym id lub tylko najnowszy
3. najczęściej będzie dodanie do tabeli powiązanej, rzadko zmiana w głównej
4. na sekundę? myślę, że raz na kwadrans albo raz na godzinę będzie jedna transakcja - kilka insertów, może update. No ale ręcznie będzie można wymusić aktualizację
5. Danych jest niewiele, więc
@anonimoweUWP: Jak masz 1 operację na kwadrans to nie wiem co to za ssd by musiałby być, żeby go to zarżnęło. Windows dużo więcej w tle robi z tym dyskiem.

Ja bym nie przekombinowywał i szedł w proste, a mniej problematyczne rozwiązanie. Namęczysz się tylko, a benefit z tego praktycznie żaden.
@vipe: zawsze mogę coś skopać ;-) Dane w bazie będzie zapisywać proces w tle wiec nie będę miał nad nim cały czas kontroli.

Zmierzyłem sobie ile zapisuje na dysku w czasie 1 inserta i wychodzi mi kilkanaście kilo.
Głowny plik sqlite ma powiedzmy 20kilo ale shm i wal (journal?) łącznie 10 razy tyle
W takim tempie przy 15 insertach co kwadrans mam prawie 30mb dziennie. Tragedii nie ma
Sprawdzę sobie w