MongoDB - konfiguracja indeksów na kolekcjach jako kod w repozytorium GIT

0

Cześć,

Ostatnio dodając jakieś indeksowanie na kolekcjach w bazie danych MongoDB doszło do mnie, że zarządzanie tym z poziomu bazy danych jest nieprzyjemne, trochę niebezpieczne i niereprodukowalne w prosty sposób na innej bazie.

To co mamy to baza z kilkudziesięcioma kolekcjami, brak jest trackingu kto jaki indeks gdzie dodaje i z jakiego ticketa - po prostu baza przyjmuje komendę collection.updateIndex() i tyle. Powoduje to trudności w debugowaniu, bo nie znana jest historia powstania lub braku jakiegoś indeksu.

Pomyślałem, żeby napisać serwis gdzie w formie plików utrzymam konfigurację indeksów i sam serwis będzie to wrzucał w podaną instancję MongoDB.
Rezultat - konfiguracja kolekcji (sortowanie, TTL itp.) miałbym przejrzyście dostępne w repozytorium GIT.

Czy ktoś z Was robił coś takiego, mógłby doradzić na co uważać przy implementacji tego? Może znacie jakieś dobre praktyki, którymi możecie się podzielić jeśli chodzi o zarządzanie tak niskopoziomową konfiguracja na bazie?

Pozdrawiam

0

Wygląda na to, że Flyway obsługuje MongoDB, więc mógłbyś go użyć w nieco pokraczny sposób (bo jego use-case to raczej bazy relacyjne i migracje ich schem). Pewnie istnieje coś lepszego dla MongoDB, ale przynajmniej brzmi prościej niż twój pomysł tworzenia nowego serwisu od zera.

Ja akurat tego używałem do PostgreSQL więc konkretniej z MongoDB ci nie pomogę niestety.

3

Tworzenie indeksów powinno być zaraz przy serwisie który z tych indeksów będzie korzystał (indeksowanie może być odpalane nawet w tym samym procesie co sam serwis). Tworzenie jednego serwisu który będzie zawierał listę wszystkich indeksów i ich konfigurację to jakaś pomyłka. Oczywiście proponowane przeze mnie rozwiązanie sprawdza się gdy każdy serwis ma swoją bazę danych - jeżeli tak nie macie, to zdecydowanie jest to większy problem niż manualne tworzenie indeksów przez nie wiadomo kogo i nie wiadomo kiedy.

2

Jeśli chodzi o bazy relacyjne, to często korzysta się z liquibase. Każdy release ma swoją "wersję", jak chcesz dodać index/kolekcję itd., to robisz to wyłącznie przez to narzędzie.
Z tego co widziałem, to obsługuje też to mongo, więc może warto w tym kierunku się rozejrzeć? Nie pracowałem dużo na mongo, ale jeśli chodzi o relacyjne bazy, to fajnie to działa.

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