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ği | Durum | Açıklama |
|---|---|---|
| Atomicity | Kısmi | BEGIN/COMMIT ile INSERT grubu atomik; kısmi hata raporlanır |
| Consistency | Evet | NOT NULL kısıtı, tip kontrolü |
| Isolation | Yok | Eşzamanlı yazmalarda izolasyon seviyesi yok |
| Durability | Evet | WAL 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
| Özellik | SQL Server | PostgreSQL | Oracle | MySQL | MenzeletDB |
|---|---|---|---|---|---|
| CREATE/DROP TABLE | Evet | Evet | Evet | Evet | Evet |
| ALTER TABLE | Evet | Evet | Evet | Evet | Kısmi (5 işlem) |
| VIEW | Evet | Evet | Evet | Evet | Evet |
| Stored Procedure | Evet | Evet | Evet | Evet | Hayır |
| Trigger | Evet | Evet | Evet | Evet | Hayır |
| Transaction (ACID) | Evet | Evet | Evet | Evet | Kısmi (INSERT) |
| JOIN (10 tür) | Evet | Evet | Evet | Kısmi | Evet |
| Window Functions | Evet | Evet | Evet | Evet | Evet |
| CTE | Evet | Evet | Evet | Evet | Evet |
| Subquery | Evet | Evet | Evet | Evet | Evet |
| RBAC | Evet | Evet | Evet | Evet | Evet |
| DESCRIBE TABLE | Evet | Evet | Evet | Evet | Evet |
| UDF (SQL ile) | Evet | Evet | Evet | Evet | Hayır |
| Columnar Storage | Hayır | Hayır | Hayır | Hayır | Evet |
| Parquet Format | Hayır | Hayır | Hayır | Hayır | Evet |
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