Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Desteklenmeyen ve Kısmi Desteklenen Özellikler

MenzeletDB, sütun tabanlı (columnar) bir analitik veritabanıdır. Geleneksel RDBMS’lerden (SQL Server, Oracle, PostgreSQL) farklı olarak bazı özellikler kasıtlı olarak desteklenmez, bazıları ise kısmi destek sunar.

Kısmi Destek

Transaction (İşlem)

Durum: Kısmi destek — yalnızca INSERT buffer’lama

MenzeletDB, BEGIN / COMMIT / ROLLBACK komutlarını destekler, ancak yalnızca INSERT (ve INSERT OR REPLACE) komutları transaction kapsamında buffer’lanır. DDL komutları (CREATE/DROP/ALTER TABLE, CREATE/DROP VIEW vb.) transaction içinde engellenir.

-- Desteklenen akış:
BEGIN
INSERT INTO urunler VALUES (1, 'Klavye', 450.00)
INSERT INTO urunler VALUES (2, 'Mouse', 250.00)
COMMIT    -- Her iki INSERT sırasıyla çalıştırılır

-- Geri alma:
BEGIN
INSERT INTO urunler VALUES (3, 'Monitör', 3500.00)
ROLLBACK  -- Buffer temizlenir, hiçbir veri yazılmaz

Davranış detayları:

  • BEGIN / BEGIN TRANSACTION: Transaction modunu başlatır. İç içe BEGIN engellenir.
  • COMMIT: Buffer’daki INSERT’leri sırasıyla çalıştırır. Kısmi başarı durumunda kaç komutun başarılı/başarısız olduğu raporlanır.
  • ROLLBACK: Buffer’ı temizler, hiçbir yazma gerçekleşmez.
  • DDL komutları (CREATE TABLE, DROP VIEW vb.) transaction içinde reddedilir.
  • SELECT, SHOW gibi okuma komutları transaction içinde normal çalışır.

Desteklenmeyen:

-- Bu komutlar MenzeletDB'de çalışmaz:
SAVEPOINT sp1;
ROLLBACK TO SAVEPOINT sp1;
ACID ÖzelliğiDurumAçıklama
AtomicityKısmiBEGIN/COMMIT ile INSERT grubu atomik; kısmi hata raporlanır
ConsistencyEvetNOT NULL kısıtı, tip kontrolü
IsolationYokEşzamanlı yazmalarda izolasyon seviyesi yok
DurabilityEvetWAL ile çökme kurtarma

ALTER TABLE

Durum: Kısmi destek — 5 işlem türü

Desteklenen işlemler:

-- Nullable sütun ekleme
ALTER TABLE urunler ADD COLUMN stok INT

-- NOT NULL + DEFAULT ile sütun ekleme (mevcut satırlara default yazılır)
ALTER TABLE urunler ADD COLUMN durum VARCHAR NOT NULL DEFAULT 'aktif'

-- Sütun silme
ALTER TABLE urunler DROP COLUMN eski_sutun

-- Sütunu NOT NULL olarak işaretleme (mevcut NULL kontrolü yapılır)
ALTER TABLE urunler ALTER COLUMN ad SET NOT NULL

-- Tablo yeniden adlandırma
ALTER TABLE urunler RENAME TO malzemeler

Desteklenmeyen işlemler:

-- Bu komutlar MenzeletDB'de çalışmaz:
ALTER TABLE urunler ALTER COLUMN fiyat TYPE BIGINT;     -- Tip değişikliği
ALTER TABLE urunler ADD CONSTRAINT pk PRIMARY KEY (id); -- Kısıt ekleme
ALTER TABLE urunler RENAME COLUMN eski TO yeni;         -- Sütun yeniden adlandırma

Detaylı ALTER TABLE kullanımı için bkz: Tablo Güncelleme


Desteklenmiyor

Stored Procedure (Saklı Yordam)

Durum: Desteklenmiyor

-- Bu komutlar MenzeletDB'de çalışmaz:
CREATE PROCEDURE rapor_olustur(tarih DATE) ...;
EXEC rapor_olustur('2024-01-01');
DROP PROCEDURE rapor_olustur;

Neden: MenzeletDB bir sorgu motorudur, prosédüral programlama ortamı değildir. PL/SQL veya T-SQL benzeri bir dil katmanı bulunmaz.

Alternatif: İş mantığı istemci tarafında uygulanabilir. Karmaşık sorgular için CTE kullanılabilir:

WITH aylik_satis AS (
    SELECT date_part('month', tarih) AS ay, SUM(tutar) AS toplam
    FROM siparisler
    GROUP BY date_part('month', tarih)
),
yillik_ozet AS (
    SELECT ay, toplam,
           SUM(toplam) OVER (ORDER BY ay) AS kumulatif
    FROM aylik_satis
)
SELECT * FROM yillik_ozet ORDER BY ay

Trigger (Tetikleyici)

Durum: Desteklenmiyor

-- Bu komutlar MenzeletDB'de çalışmaz:
CREATE TRIGGER stok_guncelle AFTER INSERT ON siparisler ...;
DROP TRIGGER stok_guncelle;

Neden: MenzeletDB olay tabanlı (event-driven) bir mekanizma içermez. Tetikleyiciler geleneksel OLTP veritabanlarının özellikleridir; MenzeletDB analitik (OLAP) odaklıdır.

Alternatif: Uygulama katmanında olay işlemecileri (event handlers) ile benzer işlevsellik sağlanabilir.

Kullanıcı Tanımlı Fonksiyon (UDF)

Durum: Kullanıcı tarafından SQL üzerinden oluşturulamaz

-- Bu komutlar MenzeletDB'de çalışmaz:
CREATE FUNCTION hesapla(x INT) RETURNS INT ...;
DROP FUNCTION hesapla;

Mevcut durum: MenzeletDB, 200+ yerleşik fonksiyonu destekler. Ayrıca sunucu içinde kayıtlı özel fonksiyonlar bulunur (ör. collate()). Ancak kullanıcıların SQL üzerinden yeni fonksiyon tanımlaması desteklenmez.

Tüm kullanılabilir fonksiyonlar için bkz: SQL Fonksiyonları


Karşılaştırma Tablosu

ÖzellikSQL ServerPostgreSQLOracleMySQLMenzeletDB
CREATE/DROP TABLEEvetEvetEvetEvetEvet
ALTER TABLEEvetEvetEvetEvetKısmi (5 işlem)
VIEWEvetEvetEvetEvetEvet
Stored ProcedureEvetEvetEvetEvetHayır
TriggerEvetEvetEvetEvetHayır
Transaction (ACID)EvetEvetEvetEvetKısmi (INSERT)
JOIN (10 tür)EvetEvetEvetKısmiEvet
Window FunctionsEvetEvetEvetEvetEvet
CTEEvetEvetEvetEvetEvet
SubqueryEvetEvetEvetEvetEvet
RBACEvetEvetEvetEvetEvet
DESCRIBE TABLEEvetEvetEvetEvetEvet
UDF (SQL ile)EvetEvetEvetEvetHayır
Columnar StorageHayırHayırHayırHayırEvet
Parquet FormatHayırHayırHayırHayırEvet

Not: MenzeletDB, OLTP (işlemsel) değil OLAP (analitik) odaklıdır. Desteklenmeyen özellikler, projenin sütun tabanlı analitik mimarisinin bilinçli tasarım kararlarıdır.

Diğer veritabanlarından geçiş yaparken detaylı eşleme tablosu için bkz: Göç Rehberi