🎯 Definicja
Jak komputer czyta dane?
- Row-Oriented (Wierszowo): Czyta całego klienta (Imię, Nazwisko, Adres, Telefon).
- Column-Oriented (Kolumnowo): Czyta same Nazwiska wszystkich klientów.
- Vectorized (Wektorowo): Czyta 1000 Nazwisk na raz w jednym cyklu procesora.
🔑 Kluczowe punkty
- OLTP (Row): Bazy transakcyjne (Postgres, MySQL). Dobre do zapisu pojedynczych transakcji (“Dodaj koszyk”).
- OLAP (Column): Hurtownie (Snowflake, BigQuery). Dobre do analiz (“Policz średnią cenę ze wszystkich koszyków”).
- Vector Engines: Nowoczesne silniki (DuckDB, ClickHouse). Wykorzystują instrukcje SIMD procesora (robią matematykę na całych wektorach liczb na raz).
📚 Szczegółowe wyjaśnienie
Dlaczego kolumnowe są szybsze do analizy? Chcesz policzyć średni wiek Polaków.
- W bazie wierszowej: Musisz wczytać z dysku całe rekordy (z Imionami, Adresami), żeby wyciągnąć Wiek. Marnujesz I/O.
- W bazie kolumnowej: Wczytujesz z dysku tylko kolumnę
Wiek. Ignorujesz resztę. Jest 100x mniej danych do przeczytania.
💡 Przykład zastosowania
Analityk wrzuca zapytanie na 100 mln wierszy w Pandas. Trwa to 20 minut (Python jest wolny, pętle są wolne). Przepisuje to na DuckDB (Silnik Wektorowy). Trwa to 2 sekundy. Dlaczego? Bo DuckDB używa C++ i SIMD, przetwarzając dane blokami (Vectors), a nie wiersz po wierszu.
📌 Źródła
- “Designing Data-Intensive Applications”.
👽 Brudnopis
- Format pliku też ma znaczenie. CSV/JSON są wierszowe (powolne). Apache Parquet/ORC są kolumnowe (szybkie).