15 kwietnia 2014

Ewolucja struktury danych jest bardzo trudna.


Szybko reakcja na zmiany jest jedną z największych zalet małego start-upu. Zmiana produktu czy procesów jest wykonalna, ale co jeżeli potrzeba zmienić samą strukturę kodu. Istnieją sposoby na zmianę kodu np. z rozbudowanymi testami. Ale co zmianą struktury danych?

Zmiany schematu mają opinię bardzo bolesnych, jest to przede wszystkim wina MySQL: po prostu dodanie kolumny do tabeli wymaga całej tabeli do skopiowania. Na dużej tablicy, to może oznaczać kilka godzin, podczas których nie można nic zapisać. Istnieją różne narzędzia, aby było to mniej dokuczliwe. Nie mniej jednak to niewiarygodne, że najbardziej popularna bazy danych open source na świecie zachowuję się tak źle.

PostgreSQL może dokonać prostych zmian schematu bez kopiowania tabeli, co oznacza, że ​​są prawie natychmiastowe. I oczywiście unikanie zmiany schematu jest podstawowym punktem dla baz danych, takich jak MongoDB. Poruszam tu drobne zmiany schematu, takie jak dodanie nowego pola ew. dwóch.

Nie wszystkie dane znajdują się w bazach danych. Niektóre mogą być w zarchiwizowanych plików (logi) lub jakiegoś magazynu danych. Jak radzić sobie ze zmianą schematu tych danych? I czasami trzeba dokonać skomplikowanych zmian w danych, takich jak podzielenie dużej rzeczy, lub połączenie kilku małych rzeczy lub migracji z jednego magazynu danych do innego. Narzędzia standardowe nie pomagają tu wiele, a bazy danych dokumentów nie sprawiają, że jest łatwiej.

Napisaliśmy dużych zadań migracyjnych, które podzieliliśmy na cały zestaw mniejszych kroków. Które to powoli będą uruchamiane w ciągu weekendu (tak na marginesie lepszy jest środek tygodnia). Oczywiście całą serenada powinna się zawiesić w połowie, część rzeczy zacznie działać na nowych danych a część nie. Drugie wyjście to całe mnóstwo komplikacji dla migracji danych jednorazowej. Czasami to jest nieuniknione.

Oczywiście są narzędzia które mogą nam pomóc, ale w małym zespole na poznawanie nie ma czasu, na konfigurowanie klastra, nie ma czasu na czytanie dokumentacji jak go używać też nie ma czasu. Duże firmy mają czas żeby się tym zająć, ale w małym zespole jest to nie do ogarnięcia.