PostgreSQL Extensions: pgvector, TimescaleDB ve Citus 2026
Bir postgres extension, çekirdek PostgreSQL’i değiştirmeden veritabanına yeni veri tipleri, index türleri, sorgu operatörleri ve arka plan işçileri eklemenizi sağlayan modüler bir genişletme katmanıdır. 2026 itibarıyla pgvector 0.8.x ile yapay zeka embedding aramaları, TimescaleDB 2.18.x ile sürekli toplam (continuous aggregate) destekli zaman serisi analitiği ve Citus 13.x ile yatay paylaşımlı (sharded) dağıtık çalışma tek bir PostgreSQL motorunda buluşturulabiliyor. Bu üç eklenti yığını, kuruluşların ayrı vector veritabanı, ayrı time-series store ve ayrı OLAP cluster işletme maliyetini büyük ölçüde elimine ediyor. Stack Overflow Developer Survey 2024 sonuçlarına göre PostgreSQL %48,7 kullanım oranıyla 2. yıl üst üste en çok tercih edilen veritabanı oldu; bu konsolidasyon eğiliminin temel sürükleyicisi de eklentilerin olgunlaşması.
Bu yazıda üç eklentinin mimarisini, performans profilini, üretim yapılandırma stratejilerini ve hangi senaryoda hangisini seçmeniz gerektiğini sayısal kıstaslarla karşılaştırıyoruz. AWS RDS, Google Cloud SQL, Azure ve self-hosted Kubernetes kurulumlarındaki desteğe değiniyor; HNSW vs IVFFlat index seçimi, hypertable chunk boyutlandırma ve distribution key gibi karar noktalarını ele alıyoruz.
PostgreSQL Eklenti Ekosistemi: Mimari Temeller
PostgreSQL eklentileri, CREATE EXTENSION komutu ile yüklenen, paylaşımlı kütüphane ve SQL nesneleri (fonksiyon, tip, operatör, index access method) içeren paketlerdir. İki ana mekanizma vardır: shared_preload_libraries‘e eklenenler PostgreSQL başlangıcında yüklenir ve arka plan işçileri çalıştırır (TimescaleDB, Citus, pg_cron); diğerleri çalışma zamanında yüklenir (pgvector, postgis, pg_trgm).
2026 itibarıyla PGXN ve PostgreSQL.org listesi 1.000’i aşkın eklenti barındırıyor; yaklaşık 250 tanesi contrib içinde. Managed servisler bir alt küme sunar: AWS RDS PostgreSQL 16 yaklaşık 90, Google Cloud SQL yaklaşık 50, Azure yaklaşık 60 eklenti destekliyor.
| Eklenti Sınıfı | Örnek | Yükleme Yöntemi | Yeniden Başlatma | Tipik Maliyet |
|---|---|---|---|---|
| Veri tipi | pgvector, postgis | CREATE EXTENSION | Gerekmez | Düşük |
| Index access method | pgvector (HNSW) | CREATE EXTENSION | Gerekmez | Orta |
| Background worker | TimescaleDB, pg_cron | shared_preload_libraries | Gerekli | Orta-Yüksek |
| Dağıtık koordinatör | Citus | shared_preload_libraries | Gerekli | Yüksek |
| Foreign data wrapper | postgres_fdw, oracle_fdw | CREATE EXTENSION | Gerekmez | Düşük |
| Audit/güvenlik | pgaudit, pgcrypto | Hibrit | Hibrit | Düşük |
Üç hedef eklentinin en kritik mimari farkı sorgu motoruna müdahale derinliğidir. pgvector minimum invazif: yeni bir tip ve iki index türü ekler. TimescaleDB orta düzey: planner hook’larına girer, hypertable partition soyutlamasını sunar. Citus ise en agresif: dağıtık sorgu planlayıcısı, dağıtık transaction yöneticisi ve worker yönlendirme katmanı çalıştırır.

pgvector: Vektör Arama ve AI Embedding Yönetimi
pgvector, 2021’de Andrew Kane tarafından başlatılan ve AI patlamasıyla GitHub’da 13.000+ yıldıza ulaşan açık kaynak eklentidir. Sürüm 0.5.0 (Eylül 2023) ile HNSW index, vector aramayı IVFFlat’a göre 3-10 kat hızlandırdı. 0.7.0 (Nisan 2024) ile halfvec ve bit tipleri eklendi; 0.8.0 (Ekim 2024) ile iterative index scans ve daha iyi recall geldi.
Temel tip vector(N); N maksimum 16.000 boyut. Tipik embedding değerleri: OpenAI text-embedding-3-small 1.536, text-embedding-3-large 3.072, Cohere embed-multilingual-v3 1.024, Sentence Transformers all-MiniLM 384. Mesafe operatörleri: <-> Öklid, <=> kosinüs, <#> iç çarpım.
| Özellik | HNSW | IVFFlat | Brute Force |
|---|---|---|---|
| Build süresi (1M, 768-d) | Yaklaşık 8-15 dk | Yaklaşık 2-4 dk | Yok (sequential scan) |
| Disk boyutu (1M, 768-d) | Yaklaşık 4.5 GB | Yaklaşık 3.2 GB | 3.0 GB (tablo) |
| QPS @ recall 0.95 | Yaklaşık 1.500-3.000 | Yaklaşık 400-800 | Yaklaşık 50-100 |
| RAM ihtiyacı | Yüksek (index in-memory) | Orta | Düşük |
| Insert sonrası tutarlılık | Anlık | Yeniden eğitim gerekebilir | Anlık |
| Tunable parametre | m, ef_construction, ef_search | lists, probes | Yok |
Üretim ortamında pgvector yapılandırma kararları:
- Index seçimi: HNSW yüksek QPS ve yüksek recall isteyen üretim için, IVFFlat batch-loaded ve nispeten statik veri setleri için, brute force 100K altı kayıt için.
- Boyut indirgeme: 1.536 boyut yerine Matryoshka representation learning ile 512’ye düşürmek disk ve RAM’i yaklaşık 3 kat azaltır; recall kaybı tipik olarak %1-3.
- Quantization: halfvec (16-bit) %50, bit (1-bit) yaklaşık %97 disk tasarrufu sağlar; bit için Hamming distance kullanılır.
- Avantaj: Mevcut PostgreSQL’e sıfır yeni veritabanı maliyetiyle entegrasyon, ACID garantileri, JOIN ile metadata filtreleme.
- Dezavantaj: Tek node ölçeklenir; 100M+ vektörde Pinecone/Qdrant gibi özel motorlara göre genelde 2-5 kat daha yavaş.
- Ne zaman seç: Vector koleksiyonu 50M altında, relational JOIN’ler kritik, yeni operational karmaşıklık istenmiyor.
pgvector’un Pinecone, Qdrant, Weaviate ve Milvus gibi özel vektör motorlarıyla karşılaştırması için Vector Veritabanı Karşılaştırma yazısı detaylı bir referans sunar. Resmi belgeler için pgvector GitHub deposundaki tuning rehberi başlangıç noktasıdır.
TimescaleDB: Zaman Serisi ve Sürekli Toplam Stratejisi
TimescaleDB, Timescale Inc. tarafından 2016’da açık kaynak olarak yayımlanan, Apache 2.0 (community) + TSL (Time-Scale License, kurumsal özellikler) lisansları altında dağıtılan zaman serisi eklentisidir. Sürüm 2.0 (Aralık 2020) ile multi-node geldi; 2.13 (Kasım 2023) hierarchical continuous aggregates ekledi; 2.18.x (2025) columnstore compression’ı iyileştirdi.
TimescaleDB’nin temel soyutlaması hypertable: kullanıcının tek bir tablo gibi gördüğü ama arka planda zaman aralığına ve isteğe bağlı bir space dimension’a göre chunk‘lara bölünmüş sanal tablo. Tipik chunk boyutu, RAM’in dörtte birinden küçük olacak şekilde ayarlanır (örn. 64 GB RAM için 7 günlük interval, satır başına 100 byte ve 1M satır/saat için yaklaşık 16 GB).
| Yetenek | TimescaleDB Community | TimescaleDB Cloud | InfluxDB OSS 3 | QuestDB |
|---|---|---|---|---|
| Sorgu dili | SQL (PostgreSQL) | SQL | SQL + Flux (deprecated) | SQL |
| Sıkıştırma oranı (tipik) | Yaklaşık 10-20x | Yaklaşık 10-20x | Yaklaşık 5-15x | Yaklaşık 4-8x |
| Continuous aggregate | Var (materialized) | Var, hierarchical | Var (downsampling) | Sınırlı |
| Retention policy | Otomatik (job) | Otomatik | Otomatik | Partition drop |
| Yatay ölçek | Single node (multi-node deprecated 2.14+) | Multi-node | Tek node, object store | Tek node |
| Yaklaşık ingest hızı | Yaklaşık 1-2M satır/sn | Yaklaşık 3-5M satır/sn | Yaklaşık 1-3M satır/sn | Yaklaşık 4-7M satır/sn |
TimescaleDB üretim ortamında dört temel özellik üzerinden değer sağlar:
- Otomatik partitioning: Hypertable, milyarlarca satıra ölçeklenirken sorgu planlayıcısı chunk exclusion ile yalnızca ilgili partition’ları tarar.
- Continuous aggregates: Önceden hesaplanmış rollup’lar (ör. saatlik ortalamalar) materialized view + refresh policy yapısında, sorgu çağrısında üzerinde otomatik yönlendirme.
- Compression: Sütun bazlı kodlama (gorilla, delta-delta, dictionary) ile tipik 10-20 kat sıkıştırma; sıkıştırılmış chunk’larda da SELECT yapılabilir.
- Retention ve reorder:
add_retention_policyile X gün öncesini otomatik düşür;reorder_chunkile sorgu lokalitesini artır.
Önemli uyarı: Timescale 2.14’ten itibaren multi-node distributed hypertable deprecated edildi; yeni dağıtık iş yükleri için Timescale Cloud (dynamic PostgreSQL) ya da Citus + TimescaleDB kombinasyonu önerilmiyor (resmi olarak desteklenmiyor). Bu, “tek instance + büyük disk + agresif compression” stratejisinin tercih edilmesini zorunlu kıldı. Stream işlemeyle entegre senaryolar için Stream Processing yazısındaki Kafka → TimescaleDB ingestion deseni iyi bir referans.

Citus: Yatay Ölçek ve Dağıtık Sorgu Mimarisi
Citus, 2019’da Microsoft tarafından satın alınan ve Azure Cosmos DB for PostgreSQL (eski adıyla Hyperscale Citus) ürününün motoru olan dağıtık veritabanı eklentisidir. Sürüm 11 (Temmuz 2022) ile “all citus nodes are equal” mimarisi geldi; 12 (2023) schema-based sharding ekledi; 13.x (2025) PostgreSQL 17 desteği ve sorgu planlayıcısı iyileştirmeleri sundu.
Citus üç tablo tipi tanımlar:
- Distributed table: Dağıtım anahtarı (distribution key) üzerinden hash sharding ile worker’lara bölünür. Tenant ID, customer ID, user ID gibi yüksek kardinaliteli kolonlar idealdir.
- Reference table: Tüm worker’lara replike edilir. Az satırlı, sık JOIN edilen lookup tablolar için (ülke, kategori, ürün katalogu).
- Local table: Yalnızca koordinatörde tutulur; küçük ve dağıtım gerekmeyen tablolar için.
Citus’un başarı oranı, dağıtım anahtarı seçiminin doğruluğuna doğrudan bağlıdır. Co-location prensibi: aynı tenant’a ait tüm tablolar aynı worker’a düşmeli ki JOIN’ler network round-trip gerektirmesin. Yanlış dağıtım anahtarı seçimi, dağıtık JOIN performansını 10-50 kat düşürebilir.
| İş Yükü Tipi | Citus Uygunluğu | Tipik Worker Sayısı | Beklenen Hızlanma |
|---|---|---|---|
| Multi-tenant SaaS | Çok yüksek | 4-16 | Yaklaşık 4-12x |
| Real-time analytics (OLAP) | Yüksek | 8-32 | Yaklaşık 8-25x |
| Time-series | Orta (Timescale tercih edilir) | 4-16 | Yaklaşık 3-8x |
| Yüksek concurrency OLTP | Orta-yüksek | 4-8 | Yaklaşık 2-5x |
| Cross-shard transaction ağırlıklı | Düşük | Önerilmez | Yaklaşık 0.5-1x |
| Tek tablo, az join | Yüksek | 8-64 | Yaklaşık 6-30x |
Citus 11+ ile gelen columnar storage (cstore_fdw’nin halefi) sütun bazlı sıkıştırma ile analytical sorgu performansını 3-10 kat artırır. Disk üzerinde tipik sıkıştırma oranı 3-8 kat. Citus’un detaylı mimarisi için resmi Citus dokümantasyonu ve Microsoft Learn Azure Cosmos DB for PostgreSQL rehberleri birincil kaynak olarak kullanılabilir.
Üç Eklenti Karşılaştırması: Hangi Senaryo Hangisini Çağırır?
pgvector, TimescaleDB ve Citus farklı problemleri çözer; ancak kuruluşlar çoğunlukla iki veya üçünü birlikte kullanma cazibesine kapılır. Bu kombinasyonun fizibilitesi, eklentilerin paylaşılan PostgreSQL kaynaklarını nasıl kullandığına ve birbirleriyle uyumluluğuna bağlıdır.
| Boyut | pgvector | TimescaleDB | Citus |
|---|---|---|---|
| Problem alanı | Vektör/ANN arama | Zaman serisi | Yatay ölçek |
| Index tipi | HNSW, IVFFlat | BRIN-benzeri chunk exclusion | Standart + columnar |
| Yeniden başlatma gerekir mi? | Hayır | Evet (preload) | Evet (preload) |
| Managed servis desteği | RDS, Cloud SQL, Azure, Aiven, Supabase | Timescale Cloud, RDS (kısıtlı), Aiven | Azure Cosmos DB PG |
| Lisans | PostgreSQL License (BSD-benzeri) | Apache 2.0 + TSL | AGPL v3 |
| Tipik RAM ihtiyacı | Yüksek (HNSW) | Orta-yüksek | Worker başına orta |
| Yatay ölçek | Yok (single node) | Yok (single node 2.14+) | Var (sharding) |
| Birlikte çalışma | Timescale ile uyumlu | pgvector ile uyumlu | pgvector ile uyumlu, Timescale ile değil |
Kritik uyumluluk notu: Citus ve TimescaleDB resmi olarak birlikte test edilmez ve önerilmez. İkisi de planlayıcıya derin müdahale eder; aynı tabloyu hem hypertable hem distributed table yapamazsınız. Buna karşılık pgvector + Citus kombinasyonu yaygındır: vector tablo distributed olarak shard edilir, HNSW index her worker’da paralel kurulur, ANN sorgu top-K worker-side hesaplanır ve koordinatörde merge edilir. pgvector + TimescaleDB da uyumludur: zaman serisi metrikleri hypertable’da, vector embedding’leri ayrı bir tabloda tutulur ve relational JOIN ile birleştirilir.
- Senaryo A — RAG için bilgi tabanı (10M doküman, 1.536-d embedding): pgvector + HNSW, tek node, NVMe SSD, 64 GB RAM yeterli. Vector veritabanı kurmaya gerek yok.
- Senaryo B — IoT telemetri (50K sensör, 1M satır/dakika): TimescaleDB hypertable + compression + continuous aggregate. Compression sonrası disk maliyeti 10-20x düşer.
- Senaryo C — Multi-tenant SaaS (10.000 müşteri, 100M+ satır): Citus distributed table, distribution key = tenant_id, co-located reference tables.
- Senaryo D — Hibrit: kullanıcı davranışı + ürün önerileri: Citus distributed + pgvector. Kullanıcı vektörleri user_id ile shard, ANN sorgu cross-shard top-K + koordinatör merge.
- Senaryo E — Finansal market verisi + ML feature store: TimescaleDB + pgvector. Tick verileri hypertable, feature embedding’leri ayrı tablo, JOIN ile birleştirme.

Performans, Maliyet ve Üretim Yapılandırması
Üç eklentinin de üretim performansı, çekirdek PostgreSQL parametrelerine duyarlıdır. Aşağıdaki yapılandırma matrisi 32 vCPU, 128 GB RAM, NVMe SSD üzerinde tipik başlangıç değerlerini gösterir; iş yüküne göre ayar gerekir.
| Parametre | pgvector ağırlıklı | TimescaleDB ağırlıklı | Citus koordinatör | Citus worker |
|---|---|---|---|---|
| shared_buffers | 32 GB | 32 GB | 16 GB | 24 GB |
| work_mem | 64 MB | 32 MB | 16 MB | 64 MB |
| maintenance_work_mem | 4 GB | 2 GB | 1 GB | 2 GB |
| max_parallel_workers | 16 | 16 | 8 | 16 |
| effective_cache_size | 96 GB | 96 GB | 96 GB | 96 GB |
| random_page_cost | 1.1 | 1.1 | 1.1 | 1.1 |
| checkpoint_timeout | 15 min | 15 min | 10 min | 15 min |
| wal_compression | on (zstd) | on (zstd) | on (zstd) | on (zstd) |
Maliyet karşılaştırması için yaklaşık örnek (5 TB veri, 10K QPS):
- pgvector + RDS r6i.4xlarge: Tahminen aylık 1.500-2.500 USD. Vector özel motor maliyeti yok.
- TimescaleDB Cloud Production: Tahminen aylık 1.200-3.000 USD; compute + storage + multi-AZ HA dahil.
- Azure Cosmos DB for PostgreSQL (4 worker, Citus): Tahminen aylık 4.000-8.000 USD.
- Self-hosted Kubernetes (CloudNativePG): Lisans yok; 3 worker + 1 koordinatör + standby için tahminen aylık 1.000-2.500 USD donanım.
- Pinecone referans: 10M vektör @ p1.x1 için tahminen aylık 800-1.500 USD; metadata DB hariç.
Operasyonel maliyetin önemli kısmı PostgreSQL’in genel sağlığına bağlıdır: vacuum stratejisi, replication lag yönetimi, WAL arşiv hacmi. Detaylı tuning rehberi için PostgreSQL Performans yazısındaki vacuum, autovacuum ve replication ayarları bu üç eklenti için de geçerli temel bilgilerdir.
Yükseltme, Migrasyon ve Operasyonel Gotcha’lar
Üç eklentinin de yükseltme dinamikleri farklıdır ve üretimde sürpriz yaratmamak için planlama gerektirir:
- pgvector minor sürüm yükseltmesi:
ALTER EXTENSION vector UPDATE. Index rebuild gerekmez; ancak 0.5’ten 0.7’ye geçişte HNSW index’in seçimle rebuild edilmesi, daha iyi recall için önerilir. - TimescaleDB major sürüm: 2.x içinde minor güncellemeler genelde sorunsuz; ancak 1.x → 2.x ve özellikle distributed hypertable’dan single-node’a göç manuel ETL gerektirir.
- Citus major sürüm: Citus 10 → 11 geçişi için
citus_finish_pg_upgradeve metadata senkronizasyonu gerekli. 11 → 12 schema-based sharding’e geçişte uygulama tarafında prefix değişikliği olabilir. - PostgreSQL major sürüm: Eklentilerin yeni PG sürümü desteğini beklemek gerekir. Tipik gecikme: pgvector 1-3 ay, TimescaleDB 2-4 ay, Citus 3-6 ay.
- pg_dump/pg_restore: Citus’ta klasik pg_dump çalışmaz;
citus_create_restore_point+ worker-level dump gereklidir. TimescaleDB’de hypertable dump içintimescaledb-backuparacı tercih edilir.
Ömer Önal olarak son üç yılda yürüttüğüm danışmanlık projelerinde gözlemlediğim en sık üç hata: (1) Citus dağıtım anahtarının çok düşük kardinaliteli seçilmesi (örn. region_id, 5 değerli); (2) pgvector HNSW index’i diske sığmayacak büyüklükte kurmaya çalışmak ve OOM yaşamak; (3) TimescaleDB chunk interval’ın varsayılan 7 günde bırakılması ve milyon kayıt/dakika yüklü sistemlerde tek chunk’ın 200+ GB’a şişmesi.
| Operasyonel Gotcha | Etki | Önlem |
|---|---|---|
| Citus düşük kardinaliteli distribution key | Veri eğikliği (skew), 1-2 worker tıkanır | Kardinalite analizi + tenant ID veya hash(user_id) |
| pgvector HNSW maintenance_work_mem yetersiz | Index build 5-10x yavaşlar veya başarısız olur | maintenance_work_mem >= index boyutunun yaklaşık %25’i |
| TimescaleDB chunk_time_interval çok büyük | Chunk exclusion etkisiz, sorgular yavaş | RAM/4’ten küçük chunk hedefi |
| Compression öncesi index unutulmuş | Sıkıştırılmış chunk üzerinde sorgu çok yavaş | segmentby ve orderby parametrelerini iş yüküne göre ayarla |
| Citus 2PC açıkken cross-shard transaction | Locks, deadlock riski artar | citus.multi_shard_modify_mode = sequential, prepared 2PC ayarı |
| Eklenti kalıntısı (orphan) | DROP EXTENSION sonrası nesneler kalır | CASCADE ile drop, sonrasında manuel temizlik |
Veri kalitesi kontrolleri de eklenti seçimini etkiler: TimescaleDB’de continuous aggregate refresh policy’leri ile dbt incremental modelleri arasında kararlılık trade-off’u oluşur ve transformasyon katmanının materialized view’ları nasıl tüketeceği baştan tasarlanmalıdır.

Cloud Yönetilen Servisler ve Karar Çerçevesi
Managed PostgreSQL hizmetlerinin üç eklentiye yaklaşımı farklıdır. Aşağıda Mayıs 2026 itibarıyla gözlemlenen durum:
| Servis | pgvector | TimescaleDB | Citus | Not |
|---|---|---|---|---|
| AWS RDS PostgreSQL | Var (0.7.x) | Yok (Aurora Limitless ayrı) | Yok | RDS standart instance |
| Aurora PostgreSQL | Var | Yok | Yok | Aurora Limitless = Aurora’nın native sharding’i |
| Google Cloud SQL | Var (0.6.x+) | Yok | Yok | AlloyDB ayrı ürün |
| AlloyDB | Var (ScaNN da var) | Yok | Yok (kendi columnar engine) | Vector için Google’ın ScaNN entegrasyonu öne çıkıyor |
| Azure Database for PostgreSQL Flexible | Var | Apache 2 kısmı var (TSL özellikler hariç) | Var (Cosmos DB for PostgreSQL ürünü) | En geniş eklenti desteği |
| Supabase | Var (managed, RAG odaklı) | Yok | Yok | Developer-friendly |
| Aiven for PostgreSQL | Var | Apache 2 kısmı var | Yok | Multi-cloud |
| Self-hosted (CloudNativePG, Crunchy) | Hepsi | Hepsi | Hepsi | Tam kontrol, operasyon maliyeti |
Eklenti seçimi sadece teknik değil; sözleşme, lisans ve vendor-lock-in boyutları içerir. TimescaleDB’nin TSL (Time-Scale License) altındaki özellikleri (kompresyon politikaları, multi-node, bitemporal) yalnızca Timescale Cloud veya self-hosted community + TSL etkin ortamda kullanılabilir; AWS RDS gibi servislerde TSL özellikler yoktur. Citus AGPL v3 olduğundan kendi SaaS ürününüze gömerseniz kaynak kodu paylaşma yükümlülüğü oluşur (Microsoft’tan ticari lisans alternatifi mevcut). pgvector ise PostgreSQL License altında ve en az kısıtlı olan.
Geniş veri mimarisi çerçevesinde, eklenti tabanlı PostgreSQL konsolidasyonu ile cloud warehouse arasındaki seçim veri hacmi ve sorgu örüntüsüne bağlıdır. 10 TB altı operasyonel + analitik karma iş yükleri için PostgreSQL + üç eklenti çoğunlukla yeterli; petabayt ölçeğine veya saf data lake senaryolarına gelince BigQuery vs Snowflake karşılaştırması daha uygun bir referans. Resmi performans referansları için PostgreSQL CREATE EXTENSION dokümantasyonu, Timescale Documentation ve Citus Distributed PostgreSQL akademik makalesi (arXiv) birincil kaynaklardır.
Sıkça Sorulan Sorular
pgvector 100 milyondan fazla vektör için yeterli midir, yoksa Pinecone/Qdrant gerekli mi?
pgvector tek node’da 50-100 milyon vektöre kadar makul performans verir; bunun üzerinde HNSW index disk ve RAM baskısı kritikleşir. 100M+ ve sub-50 ms latency hedefi varsa Pinecone, Qdrant veya pgvector + Citus sharding tercih edilmeli. Sharding’siz pgvector’da QPS 1.500-3.000 civarında bir tavanla karşılaşır; özel motorlar tipik 5.000-15.000 QPS sunar. Karar, JOIN ihtiyacı ve mevcut PostgreSQL operasyonel olgunluğa göre verilmelidir.
TimescaleDB AWS RDS’te neden tam çalışmıyor?
AWS RDS PostgreSQL, TimescaleDB’nin Apache 2 sürümünü ve TSL özelliklerini desteklemez; Amazon kendi Timestream ve Aurora Limitless ürünlerini önceliklendirir. Tam TimescaleDB için Timescale Cloud (AWS bölgelerinde mevcut), Aiven for PostgreSQL veya self-hosted EC2 + RDS dışı kurulum gerekir. RDS üzerinde sadece çekirdek PostgreSQL partitioning ve pg_partman ile alternatif kurulum yapılabilir.
Citus distribution key’i sonradan değiştirebilir miyim?
Doğrudan ALTER ile değiştiremezsiniz; undistribute_table ile dağıtımı kaldırıp create_distributed_table ile yeni anahtarla tekrar oluşturmak gerekir. Bu operasyon büyük tablolarda saatler sürebilir ve downtime gerektirir; planlama aşamasında kardinalite analizi ve test ortamında yük simülasyonu yapmak en güvenli yaklaşımdır. Schema-based sharding (Citus 12+) bazı senaryolarda daha esnek bir alternatif sunar.
pgvector ve TimescaleDB aynı veritabanında çalışır mı?
Evet, ikisi de uyumludur ve aynı veritabanında sorunsuz çalışır. Vector embedding’ler ayrı bir tabloda, time-series metrikleri hypertable’da tutulur ve gerektiğinde standart SQL JOIN ile birleştirilir. Yaygın ML feature store deseninde tick verileri TimescaleDB hypertable, feature vektörleri pgvector tablosu, JOIN üzerinden anlık sorgu yapılır. shared_preload_libraries içinde timescaledb belirtilmesi yeterlidir.
Üç eklentiyi de aynı anda kullanmalı mıyım?
Hayır, gereksinim olmadan üçünü birden açmak operasyonel yükü artırır ve Citus+Timescale gibi uyumsuz kombinasyonlara yol açabilir. Senaryo bazlı seçim mantıklıdır: vektör araması varsa pgvector, zaman serisi varsa TimescaleDB, tek node kapasitesini aşan ölçek varsa Citus. Hibrit ihtiyaçlarda pgvector + (TimescaleDB veya Citus) ikili kombinasyonu yeterlidir ve resmi olarak desteklenir.
Sonuç
PostgreSQL’in 2026’daki çekiciliği, çekirdek motorun değil eklenti ekosisteminin olgunluğundan geliyor. pgvector ile vector veritabanı, TimescaleDB ile zaman serisi store, Citus ile yatay ölçek ihtiyaçlarının önemli bölümü tek bir teknoloji stack’inde, tek bir operasyonel disiplinle karşılanabiliyor. Bu konsolidasyon, küçük ve orta ölçekli ekipler için ayrı veritabanları işletmenin operasyonel maliyetini büyük ölçüde düşürüyor; büyük ekipler içinse hibrit mimari (kritik uçlarda özel motorlar + ortak PostgreSQL omurgası) en pragmatik desen.
Karar çerçevesi şöyle özetlenebilir: 50M altı vektör, 10 TB altı time-series, tek node yetebilecek ölçek için PostgreSQL + ilgili eklenti yeterlidir. Yatay ölçek zorunluysa Citus devreye girer; ancak distribution key tasarımı ve Citus+Timescale uyumsuzluğu gibi tasarım kısıtları en başta değerlendirilmelidir. Managed servis ile self-hosted seçimi, lisans (özellikle AGPL ve TSL), TSL özellik ihtiyacı ve operasyonel olgunluk düzeyi üzerinden yapılmalıdır.
Ekibinizin PostgreSQL eklenti stratejisini şekillendirirken mimari değerlendirme, dağıtım anahtarı tasarımı veya managed/self-hosted karar analizine destek istiyorsanız iletişim sayfasından teknik bir görüşme planlayabiliriz; üretim ortamına geçiş öncesi 2-4 haftalık benchmark ve POC süreciyle riskler önemli ölçüde azaltılabilir.










Ömer ÖNAL
Mayıs 16, 2026Veri mühendisliği projelerinde sıkça gördüğüm darboğaz: pipeline mimarisine yatırım yapmadan önce veri kalitesi metriklerinin baseline’ı yok. Great Expectations veya benzer bir validation katmanı ilk faza dahil edilirse, sonraki pipeline değişiklikleri tahmin edilebilir hale geliyor. Yorumlarınız ne yönde?