[Intum Dev](https://intum.dev.md) / [Bazy Danych](https://intum.dev/bazy-danych.md)

# [Skróty i pojęcia bazodanowe - od OLTP po RAG](https://intum.dev/bazy-danych/skroty-i-pojecia-bazodanowe-od-oltp-po-rag.md)

Zestawienie najważniejszych skrótów i pojęć związanych z bazami danych, przetwarzaniem danych i AI. Od klasycznych terminów z lat 90. po nowoczesne koncepcje wokół baz wektorowych i LLM-ów.

## Klasyczne - przetwarzanie transakcyjne i analityczne

**OLTP** - Online Transaction Processing. Szybkie operacje na pojedynczych rekordach - INSERT, UPDATE, DELETE. Codzienne "klikanie" w aplikacji. Termin spopularyzowany przez Jima Graya (Microsoft Research) w latach 80.

**OLAP** - Online Analytical Processing. Ciężkie zapytania czytające tysiące/miliony wierszy - raporty, agregacje, dashboardy. "Online" oznacza interaktywnie, w odróżnieniu od batchowych raportów generowanych godzinami. Termin wprowadzony przez Edgara Codda w 1993 roku.

**HTAP** - Hybrid Transactional/Analytical Processing. Baza próbująca obsłużyć OLTP i OLAP jednocześnie. Termin ukuty przez Gartner w 2014. Przykłady: TiDB, CockroachDB, SingleStore. W praktyce trudne do realizacji - artykuł PlanetScale o kolejkach w Postgresie dobrze pokazuje dlaczego mieszanie tych obciążeń bywa problematyczne.

**ACID** - Atomicity, Consistency, Isolation, Durability. Cztery właściwości gwarantujące niezawodność transakcji bazodanowych. Fundament relacyjnych baz danych od lat 80. Termin sformalizowany przez Jima Graya i Andreasa Reutera (1983).

**MVCC** - Multi-Version Concurrency Control. Mechanizm pozwalający wielu transakcjom czytać i pisać dane jednocześnie bez blokowania się nawzajem. Baza utrzymuje wiele wersji tego samego wiersza. Używany w PostgreSQL, Oracle, MySQL (InnoDB). Koncepcja z 1981 roku (Reed, MIT).

**CAP** - Consistency, Availability, Partition tolerance. Twierdzenie Erica Brewera z 2000 roku - system rozproszony może zagwarantować tylko 2 z 3 właściwości jednocześnie. Wpłynęło na projektowanie baz NoSQL.

## Przetwarzanie i przepływ danych

**ETL** - Extract, Transform, Load. Klasyczny przepływ: wyciągnij dane ze źródła, przetransformuj (wyczyść, przelicz), załaduj do hurtowni. Dominujący wzorzec od lat 90.

**ELT** - Extract, Load, Transform. Nowoczesne podejście - załaduj surowe dane do hurtowni, transformuj tam. Możliwe dzięki mocy obliczeniowej BigQuery/Snowflake. Spopularyzowane ok. 2015-2018 wraz z rozwojem chmurowych hurtowni.

**CDC** - Change Data Capture. Śledzenie zmian w bazie w czasie rzeczywistym. Np. Debezium (Red Hat, 2017) czyta WAL Postgresa i streamuje zmiany do Kafki. Pozwala synchronizować systemy bez ciężkich batchowych eksportów.

**DAG** - Directed Acyclic Graph. Graf skierowany bez cykli, używany do modelowania przepływów zadań. Apache Airflow (Airbnb, 2014) spopularyzował ten termin w kontekście pipeline'ów danych.

## Typy baz i architektury danych

**DWH** (Data Warehouse) - ustrukturyzowana hurtownia danych zoptymalizowana pod zapytania analityczne. Klasyka: Teradata (lata 80.), obecnie: Snowflake, BigQuery, Redshift.

**Data Lake** - magazyn surowych danych w dowolnym formacie (JSON, Parquet, CSV) na tanim storage (np. S3). Termin spopularyzowany przez Jamesa Dixona (Pentaho) w 2010.

**Data Lakehouse** - hybryda lake + warehouse. Surowe dane z ustrukturyzowanym dostępem. Databricks wprowadził termin ok. 2020 wraz z Delta Lake.

**Data Mesh** - architektura gdzie każdy zespół zarządza swoimi danymi jako produktem, zamiast jednej centralnej hurtowni. Zaproponowana przez Zhamak Dehghani (Thoughtworks) w 2019.

MDM - Master Data Management. Jedno źródło prawdy dla kluczowych danych (klient, produkt, adres). Ważne w dużych organizacjach z wieloma systemami.

## Bazy wektorowe i wyszukiwanie

**ANN** - Approximate Nearest Neighbor. Algorytm szybkiego przybliżonego wyszukiwania najbliższych wektorów. Zamiast porównywać z każdym wektorem (O(n)), używa sprytnych struktur indeksowych.

**HNSW** - Hierarchical Navigable Small World. Najpopularniejszy algorytm ANN, opublikowany przez Malkov i Yashunin w 2016. Używany w pgvector, Pinecone, Qdrant, Weaviate. Buduje wielopoziomowy graf do szybkiego przeszukiwania.

pgvector - rozszerzenie PostgreSQL dodające typ danych wektorowych i indeksy ANN (HNSW, IVFFlat). Pozwala robić wyszukiwanie semantyczne bez oddzielnej bazy wektorowej. Autor: Andrew Kane, 2021.

## AI i LLM-y - pojęcia związane z danymi

**RAG** - Retrieval-Augmented Generation. LLM przed odpowiedzią wyszukuje relevantne dokumenty z bazy wiedzy (zwykle przez embeddingi + ANN) i dołącza je do kontekstu. Zamiast polegać na pamięci modelu, dociągasz aktualne fakty. Zaproponowane przez Meta AI (Lewis et al.) w 2020.

**Embeddingi** - reprezentacja tekstu/obrazu jako wektora liczb (np. 1536 wymiarów). Podobne znaczeniowo teksty mają bliskie wektory. Fundament wyszukiwania semantycznego i RAG. Koncepcja z Word2Vec (Google, Mikolov, 2013), rozwinięta przez modele typu BERT i OpenAI Embeddings.

**MCP** - Model Context Protocol. Protokół Anthropic (2024) do podłączania zewnętrznych narzędzi i źródeł danych do LLM-ów. Standardowy interfejs - zamiast pisać osobną integrację dla każdego modelu, definiujesz narzędzia raz.

GraphRAG - RAG wzbogacony o graf wiedzy. Zamiast płaskiego wyszukiwania dokumentów, dane są powiązane w graf (encje + relacje). Lepsze odpowiedzi na złożone pytania wymagające łączenia informacji z wielu źródeł. Opublikowany przez Microsoft Research w 2024.

## Przetwarzanie strumieniowe

**CEP** - Complex Event Processing. Wykrywanie wzorców w strumieniu zdarzeń w czasie rzeczywistym. Np. "3 nieudane logowania w 5 minut z tego samego IP - zablokuj". Koncepcja z lat 2000., narzędzia: Apache Flink, Esper.

Stream vs Batch - dwa podejścia do przetwarzania. Batch przetwarza duże porcje co jakiś czas (nocny import), stream przetwarza zdarzenia na bieżąco (Kafka, Flink, Kinesis). Trend idzie w stronę streamu, ale batch nadal ma sens dla ciężkich transformacji.