Junior
Czym są bazy danych NoSQL?
sobes.tech AI
Odpowiedź od AI
NoSQL (Not Only SQL) to klasa systemów zarządzania bazami danych nierelacyjnych, które używają struktur innych niż tradycyjne tabele z ustalonym schematem. Są zaprojektowane do obsługi dużych ilości danych niestrukturalizowanych, półstrukturalizowanych i wielostrukuralizowanych, zapewniając elastyczną skalowalność i wysoką dostępność.
Główne kategorie baz danych NoSQL:
- "Klucz-wartość" (Key-Value Stores): Przechowują dane w parach klucz-wartość, gdzie klucz jednoznacznie identyfikuje wartość.
# Przykład reprezentacji danych w magazynie klucz-wartość user_data = { "user:123": {"name": "Alice", "age": 30}, "product:456": {"name": "Laptop", "price": 1200} } - "Kolumnowe" (Columnar Databases): Przechowują dane według kolumn, a nie wierszy. Optymalizowane do zapytań analitycznych i przetwarzania dużych ilości danych.
- "Dokumentowe" (Document Databases): Przechowują dane w formie dokumentów (np. JSON, BSON, XML). Schemat danych jest elastyczny.
// Przykład dokumentu w bazie danych dokumentowej { "_id": "prod_abc", "name": "Smartphone", "brand": "XYZ", "specs": { "display": "6.5 inch", "camera": "48MP" }, "tags": ["elektronika", "mobil"] } - "Grafowe" (Graph Databases): Przeznaczone do przechowywania i przetwarzania danych przedstawionych w formie wierzchołków (węzłów) i krawędzi (relacji). Używane do analizy relacji.
Różnice od relacyjnych baz danych (SQL):
| Charakterystyka | Relacyjne (SQL) | NoSQL |
|---|---|---|
| Schemat danych | Stały, sztywny | Elastyczny, dynamiczny |
| Skalowalność | Pionowa (zwiększanie mocy serwera) | Pozioma (dodawanie serwerów) |
| Normalizacja | Wysoka (redukcja redundancji) | Niska (duplikacja danych dla wydajności) |
| Transakcje ACID | Zazwyczaj pełne wsparcie | Różne wsparcie (czasami BASE) |
| Język zapytań | SQL | Różni się (często API, specyficzne języki) |
Bazy danych NoSQL wybierane są dla scenariuszy wymagających wysokiej skalowalności, elastyczności schematu, szybkiego przetwarzania dużych ilości danych (Big Data), pracy z danymi semi-strukturalnymi/niestrukturalnymi lub specyficznych modeli danych (np. grafy).