OLTP ve OLAP Karşılaştırması
İşlemsel ve analitik veritabanları.
OLTP ve OLAP Karşılaştırması, CoddyKit'te ücretsiz bir SQL Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, SQL Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. SQL Academy kursu toplamda 4 dersten oluşur.
OLTP ve OLAP Nedir
Veritabanları her kullanım için tek tip değildir. Birbirinden temelde farklı iki iş yükü, veritabanlarını tasarlama ve işletme biçimimizi şekillendirmiştir: OLTP (Çevrimiçi İşlem İşleme) ve OLAP (Çevrimiçi Analitik İşleme).
Aralarındaki farkı anlamak, her veri uzmanı için çok önemlidir. OLTP ve OLAP arasındaki doğru seçim; sorgu hızını, depolama maliyetini ve veri sisteminizin genel mimarisini belirler.
OLTP: İşlemler için Tasarlanmıştır
OLTP sistemleri, gerçek zamanlı iş olaylarını yansıtan yüksek sayıdaki kısa ve hızlı işlemi (ekleme, güncelleme ve silme işlemlerini) yönetir. Sipariş oluşturma, ödeme işleme veya müşteri kaydını güncelleme buna örnek olarak verilebilir.
OLTP'nin temel özellikleri işlem başına düşük gecikme, yüksek eşzamanlılık ve güçlü tutarlılıktır. Veri bütünlüğünü korumak için her işlem ACID uyumlu olmalıdır.
-- OLTP example: inserting a new order
INSERT INTO orders (customer_id, product_id, quantity, order_date)
VALUES (1042, 88, 3, CURRENT_DATE);
-- Immediately update inventory
UPDATE inventory
SET stock = stock - 3
WHERE product_id = 88;OLAP: Analiz için Tasarlanmıştır
OLAP sistemleri, eğilimleri, örüntüleri ve özetleri ortaya çıkarmak için büyük miktarda geçmiş veriyi tarayan karmaşık sorgular için eniyileştirilmiştir. İş analistleri ve veri bilimcileri OLAP'ı şu tür soruları yanıtlamak için kullanır: 'Geçen çeyrekte bölge başına toplam satışlarımız ne kadardı?'
OLAP sorguları çoğu zaman milyonlarca satırı toplar ve olgu ile boyut tabloları arasında birden çok birleştirme içerir. Tek tek yazma işlemlerinin hızı ikinci plandadır; önemli olan okuma verimi ve sorgu esnekliğidir.
-- OLAP example: total sales by region for Q1 2024
SELECT
d.region,
SUM(f.sales_amount) AS total_sales,
COUNT(f.order_id) AS order_count
FROM fact_sales f
JOIN dim_date dd ON f.date_key = dd.date_key
JOIN dim_store d ON f.store_key = d.store_key
WHERE dd.year = 2024
AND dd.quarter = 1
GROUP BY d.region
ORDER BY total_sales DESC;İkisini Yan Yana Karşılaştırma
Aradaki farkı hatırlamanın en kolay yolu, her sistemi kimin ve nasıl kullandığını düşünmektir:
- OLTP: uygulamaların arka uçları tarafından kullanılır; binlerce eşzamanlı kullanıcı vardır; her sorgu birkaç satıra erişir.
- OLAP: analistler ve raporlama araçları tarafından kullanılır; eşzamanlı sorgu sayısı daha azdır, ancak her sorgu milyonlarca satırı tarar.
Bu zıt erişim kalıpları, çok farklı şema tasarımlarına, dizin oluşturma stratejilerine ve hatta donanım tercihlerine yol açar.
-- OLTP: lookup a single customer's latest order (row-level access)
SELECT o.order_id, o.order_date, o.total_amount
FROM orders o
WHERE o.customer_id = 1042
ORDER BY o.order_date DESC
LIMIT 1;
-- OLAP: monthly revenue trend over the past year (aggregate scan)
SELECT
DATE_TRUNC('month', order_date) AS month,
SUM(total_amount) AS revenue
FROM orders
WHERE order_date >= CURRENT_DATE - INTERVAL '12 months'
GROUP BY 1
ORDER BY 1;Şema Tasarımı: Normalleştirilmiş ve Normalleştirilmemiş
OLTP veritabanları, gereksiz tekrarları ortadan kaldırmak ve yazma işlemlerini verimli hâle getirmek için normalleştirilmiş şemaları (3NF veya üstü) tercih eder. Her varlık kendi tablosunda bulunur; böylece her işlemde dokunulan veri miktarı azalır.
OLAP veritabanları, verilerin önceden birleştirildiği ve gereksiz tekrarlar içerdiği normalleştirilmemiş şemaları — özellikle yıldız ve kar tanesi şemalarını — tercih eder. Bu yaklaşım, sorgu sırasında maliyetli birleştirme işlemlerini ortadan kaldırır ve sütun tabanlı depolama motorlarının verileri daha hızlı taramasını sağlar.
-- Normalized OLTP design (3NF)
CREATE TABLE customers (
customer_id SERIAL PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(150) UNIQUE
);
CREATE TABLE orders (
order_id SERIAL PRIMARY KEY,
customer_id INT REFERENCES customers(customer_id),
order_date DATE,
total NUMERIC(10,2)
);
-- Denormalized OLAP fact table (star schema)
CREATE TABLE fact_sales (
sale_id BIGINT PRIMARY KEY,
customer_key INT,
date_key INT,
product_key INT,
region VARCHAR(50),
category VARCHAR(50),
amount NUMERIC(12,2)
);Dizinleme Stratejileri Farklıdır
OLTP sistemleri, bir işlem içindeki tek satırlı aramaları hızlandırmak ve birleştirme işlemlerini verimli hâle getirmek için birincil anahtarlar ve yabancı anahtarlar üzerindeki B-ağacı dizinlerine büyük ölçüde güvenir.
OLAP sistemleri bit eşlem dizinlerinden, sütun tabanlı depolamadan ve bölümlemeden yararlanır. Veriler satır satır yerine sütun sütun depolandığında, bir sütunun tamamını (örneğin tüm satış tutarlarını) taramak çok daha verimli olur.
-- OLTP: B-tree index for fast order lookup by customer
CREATE INDEX idx_orders_customer
ON orders (customer_id);
-- OLTP: compound index for range queries
CREATE INDEX idx_orders_date_customer
ON orders (order_date, customer_id);
-- OLAP: partition fact table by year to prune scan
CREATE TABLE fact_sales_2024
PARTITION OF fact_sales
FOR VALUES FROM ('2024-01-01') TO ('2025-01-01');Eşzamanlılık ve Kilitleme
OLTP sistemleri, çakışma yaşamadan aynı anda gerçekleşen binlerce yazma işlemini yönetebilmelidir. Veritabanları, okuyucuların yazıcıları ve yazıcıların da okuyucuları hiçbir zaman engellememesi için satır düzeyinde kilitleme ve MVCC (Çok Sürümlü Eşzamanlılık Denetimi) kullanır.
OLAP sorguları çoğunlukla salt okunurdur. Kilitleme nadiren sorun oluşturur; ancak uzun süren taramalar önemli miktarda CPU ve G/Ç kaynağı tüketebilir. Çoğu veri ambarı, OLTP kaynağından toplu ETL veya CDC (Değişiklik Verisi Yakalama) ile doldurulan ayrı bir sistemde OLAP çalıştırır.
-- OLTP: explicit transaction with row-level lock
BEGIN;
SELECT balance
FROM accounts
WHERE account_id = 7
FOR UPDATE;
UPDATE accounts
SET balance = balance - 200
WHERE account_id = 7;
COMMIT;ETL: OLTP ile OLAP Arasındaki Köprü
OLTP ve OLAP uyumsuz tasarımlara sahip olduğundan kuruluşlar, işlem veritabanındaki verileri belirli bir programa göre (gecelik, saatlik veya gerçeğe yakın zamanlı olarak) analitik veri ambarına kopyalayıp yeniden biçimlendirmek için ETL (Ayıklama, Dönüştürme, Yükleme) işlem hatlarını kullanır.
ETL süreci, normalleştirilmiş OLTP satırlarını normalleştirilmemiş olgu ve boyut kayıtlarına dönüştürürken iş mantığını da uygular (örneğin para birimi dönüştürme ve müşteri segmentasyonu).
-- Simplified ETL INSERT from OLTP orders into OLAP fact table
INSERT INTO fact_sales (
customer_key,
date_key,
product_key,
amount
)
SELECT
dc.customer_key,
dd.date_key,
dp.product_key,
o.total_amount
FROM orders o
JOIN dim_customer dc ON dc.source_customer_id = o.customer_id
JOIN dim_date dd ON dd.calendar_date = o.order_date
JOIN dim_product dp ON dp.source_product_id = o.product_id
WHERE o.order_date = CURRENT_DATE - INTERVAL '1 day'
AND o.order_id NOT IN (SELECT source_order_id FROM fact_sales);Tipik OLAP Sorgu Kalıpları
OLAP sorguları neredeyse her zaman toplulaştırmalar (SUM, COUNT, AVG), birden çok boyut üzerinden gruplama ve tarih aralıklarına ya da kategorilere göre filtreleme içerir. Bunlar, panoların ve iş raporlarının temel yapı taşlarıdır.
Pencere işlevleri OLAP iş yüklerinde özellikle güçlüdür; kendi kendine birleştirme yapmadan her dönemin değerlerini önceki dönemin değerleriyle karşılaştırmanıza olanak tanır.
-- Year-over-year revenue comparison using a window function
SELECT
dd.year,
dd.quarter,
SUM(f.amount) AS revenue,
LAG(SUM(f.amount)) OVER (PARTITION BY dd.quarter
ORDER BY dd.year) AS prev_year_revenue,
ROUND(
100.0 * (SUM(f.amount) -
LAG(SUM(f.amount)) OVER (PARTITION BY dd.quarter
ORDER BY dd.year))
/ NULLIF(LAG(SUM(f.amount)) OVER (PARTITION BY dd.quarter
ORDER BY dd.year), 0)
, 2) AS yoy_pct_change
FROM fact_sales f
JOIN dim_date dd ON f.date_key = dd.date_key
GROUP BY dd.year, dd.quarter
ORDER BY dd.quarter, dd.year;Sınırların Bulanıklaşması: HTAP
TiDB, SingleStore ve PostgreSQL + sütun tabanlı uzantılar gibi modern sistemler HTAP (Hibrit İşlemsel/Analitik İşleme) uygular. Bu sistemler, ayrı OLTP ve OLAP sistemlerini korumanın getirdiği işletimsel karmaşıklıktan kaçınarak her iki iş yükünü tek bir motorda yönetmeyi amaçlar.
HTAP bunu, verileri aynı anda iki biçimde depolayarak gerçekleştirir: işlemsel yazma işlemleri için bir satır deposu ve analitik okumalar için bir sütun deposu kullanır; bu iki depo otomatik olarak eşitlenir.
-- PostgreSQL with cstore_fdw (columnar extension) example
-- Analytical table stored in columnar format
CREATE FOREIGN TABLE fact_sales_columnar (
date_key INT,
product_key INT,
region VARCHAR(50),
amount NUMERIC(12,2)
)
SERVER cstore_server
OPTIONS (filename '/data/fact_sales_columnar');
-- Regular OLTP table remains row-based
-- Both can be queried in the same SQL statement
SELECT f.region, SUM(f.amount)
FROM fact_sales_columnar f
GROUP BY f.region;Doğru Sistemi Seçme
OLTP ile OLAP (veya HTAP) arasındaki seçim, öncelikli iş yükünüze bağlıdır:
- Olayları gerçek zamanlı olarak kaydeden bir uygulama geliştiriyorsanız OLTP veritabanı (PostgreSQL, MySQL, SQL Sunucusu) kullanın.
- Geçmiş veriler üzerinde bir raporlama katmanı oluşturuyorsanız OLAP ambarı (BigQuery, Redshift, Snowflake, ClickHouse) kullanın.
- Her ikisine de ihtiyacınız varsa ve işletim kolaylığı istiyorsanız HTAP seçeneklerini değerlendirin.
Birçok üretim mimarisi her ikisini de kullanır: kayıt sistemi olarak bir OLTP veritabanı ve analiz için ayrı bir veri ambarı; bu sistemler bir ETL işlem hattıyla birbirine bağlanır.
-- Quick diagnostic: check table access pattern
-- High seq_scan relative to idx_scan = analytical (OLAP-like) load
SELECT
relname AS table_name,
seq_scan,
idx_scan,
n_live_tup AS live_rows
FROM pg_stat_user_tables
ORDER BY seq_scan DESC
LIMIT 10;Bilginizi Sınayın
OLTP ve OLAP sistemleri arasındaki temel farkları anlayıp anlamadığınızı sınayın.
Ders Özeti
OLTP ve OLAP — temel çıkarımlar:
- OLTP, ACID garantilerine sahip hızlı ve eşzamanlı satır düzeyinde yazma işlemlerini içeren gerçek zamanlı işlemsel iş yüklerini yönetir.
- OLAP, normalleştirilmemiş şemaları kullanarak büyük geçmiş veri kümeleri üzerinde karmaşık toplulaştırmalar içeren analitik iş yüklerini yönetir.
- Şema tasarımı iş yükünü izler: OLTP için normalleştirilmiş (3NF), OLAP için yıldız/kar tanesi şeması kullanılır.
- ETL işlem hatları, dönüştürülmüş OLTP verilerini analitik veri ambarına yükleyerek iki sistemi birbirine bağlar.
- HTAP sistemleri, ikili satır/sütun depolama kullanarak her iki iş yükünü tek bir motordan sunmaya çalışır.
Başlangıçta doğru mimariyi seçmek, ileride zahmetli geçişleri önler ve sorgularınızın kullanıcılarınızın beklediği hızda çalışmasını sağlar.
Sıkça Sorulan Sorular
“OLTP ve OLAP Karşılaştırması” dersi ücretsiz mi?
Evet — “OLTP ve OLAP Karşılaştırması” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve SQL Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. SQL Academy kursu toplamda 4 dersten oluşur.
“OLTP ve OLAP Karşılaştırması” dersinde ne öğreneceğim?
İşlemsel ve analitik veritabanları. SQL Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
SQL Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te SQL Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“OLTP ve OLAP Karşılaştırması” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu SQL Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her SQL Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- OLTP ve OLAP Karşılaştırması
- Olgu ve Boyut Tabloları
- Yıldız ve Kar Tanesi Şemaları
- Analitik Sorgular Yazma