2016-05-21 40 views
7

Mam zainstalowaną aplikację na telefony komórkowe, gdzie użytkownicy czytają i zapisują w bazie danych Firebase. chcę zrobić zmianę schematu w bazie od:Aktualizacja schematu bazy danych w produkcji

|-- "app" 
| |-- "a" 
|   |--"y" 
| |-- "b" 
|   |--"y" 

do następujących gdzie i b zostały połączone w jedno:

|-- "app" 
| |-- "x" 
|   |--"y" 

Utrzymując funkcjonowanie aplikacji na obu klientach, które nie zostały uaktualnione do nowej wersji z nową strukturą schematu i klientami, które zostały uaktualnione.

Problem polega na utrzymaniu zgodności dwóch schematów i ich aktualizacji podczas wdrażania nowej wersji aplikacji, ponieważ nie możemy mieć pewności, że użytkownicy zaktualizowali aplikację.

W Firebase jest to możliwe, ponieważ nie ma serwera, który mógłby to obsłużyć? W jaki sposób Firebase ma jakąś funkcję, aby słuchać zdarzeń zapisu, a następnie powielać te dane w innych miejscach lub jakie są moje opcje?

Odpowiedz

4

jedynym wyborem, jeśli chcesz zachować funkcjonalność zarówno starych i nowych wersji jest wsparcie zarówno wersje:

  • Każda struktura danych specyficznych dla danego użytkownika, która migracji mogą być aktualizowane raz przez nowa wersja aplikacji (wykryj, czy stary format nadal istnieje i napisz jako nowy).

  • Jeśli zmieniła się struktura danych globalnych używanych przez wszystkich użytkowników, baza danych powinna zachować dane w starym i nowym formacie. Będąc NoSQL, powinno to tylko powodować problemy z spójnością zapisu (trzeba zaktualizować wszystkie lokalizacje).

Firebase czy nie, nie można oczekiwać, że na zawsze będzie obsługiwać stare wersje aplikacji. Jeśli zdecydujesz się na obsługę do X poprzednich wersji, będziesz musiał przechowywać wersje X swojej struktury danych równolegle (i wszystkie dodatkowe zawiłości w operacjach zapisu).

3

Innym rozwiązaniem z zawodowcami & minusy:

  1. Niech Twój sklep w bazie co wersje aplikacji są zgodne z aktualnym schemacie
  2. Pierwszą rzeczą, gdy aplikacja jest uruchomiona, kwerendy informacji w DB
  3. Jeśli użytkownik A ma kompatybilną wersję, gratulacje!
  4. Jeśli użytkownik B nie ma wersji kompatybilnej, zaprosić go zaktualizować swoją aplikację, która może ssać do niego:
    • Może on nie jest w stanie zaktualizować aplikację ze względów technicznych (na przykład dla aplikacji iOS zwiększyłeś cel wdrożenia do wersji na iOS, która nie jest kompatybilna z urządzeniem tego użytkownika)
    • Może on nie będzie mógł aktualizować aplikacji przez jakiś czas, ponieważ ma słaby odbiór sieci itp.

myślę utrzymując kilka wersji DB na Firebase jest trochę overkill, szczególnie jeśli Twoja aplikacja jest nieco społeczny i wszystkie wersje powinny zachować będąc funkcjonalny. Jeśli wersja 1.0 tworzy treść, która powinna być dostępna dla wersji 2.0 i 3.0, i jeśli powtórzysz to ograniczenie dla wszystkich innych kombinacji wersji, uuugh, będzie to trud utrzymania.

Myślę, że jest to jedna poważna wada przy użyciu Backendu mobilnego jako usługi rozwiązań w porównaniu do tradycyjnych serwerów zaplecza, gdzie utrzymanie starszego punktu końcowego byłoby znacznie łatwiejsze.