Citus: Gerçek Zamanlı, Yatay Büyüyebilen PostgreSQL Veri Hattı
NoSQL ve mikro servisler her ne kadar yaygınlaşmış olsa da, kurumsal kullanım ve çözümlerin altında iyi bir ilişkisel veritabanı aranıyor. En hızlı büyüyen sektör olarak Online Business veya elektronik ticaret şirketleri yeni teknolojileri hızlı bir şekilde adapte etmekte. Diğer taraftan, dünyanın diğer yarısında ve elektronik ticaretin temel iş yükünün çalıştığı çekirdekte her zaman ilişkisel veritabanı servislerini görüyoruz.
İlişkisel veritabanları için ise hızlı şekilde büyüyebilme, gerçek zamanlı analitik bilgi toplayabilme, paralel sorgular, dağıtık yapılanma konuları en popüler konular. İşletim sistemi seviyesinde kümeleme üzerinde çalışan ve sadece dikey büyümeye müsait veritabanı yapılarından bahsetmiyoruz. Hızlı büyüyen iş ihtiyaçlarını, işlem (transaction) sayılarını kaldırabilecek şekilde yatayda büyüyebilecek, gerektiğinde küçülebilecek, esnek, bugüne değil yarına hatta çok daha uzun vadeye göre planlanan iş ortamlarından bahsediyoruz.
Citus işte tam da bu ihtiyacı karşılamak üzere geliştirilmiş bir PostgreSQL eklentisi. Yatayda PostgreSQL veritabanlarını birden fazla sistem üzerine sharding ve replikasyon kullanarak “yayan“, özel sorgu motoru sayesinde kendisine gelen sorguları paralel süreçler halinde bu sistemler üzerinde çalıştırıp büyük veri setleri üzerinden gerçek zamanlı (1 saniyeden az) cevaplar alınmasını sağlayan bir yapı.
Eklenti olarak geliştirilmiş olması, mevcut PostgreSQL sürümünüzü değiştirmeye ihtiyaç duymayacağınız, hatta yeni sürümleri yüklemeye devam ederek gelen yeniliklerden faydalanmaya devam edebileceğiniz anlamına geliyor. Citus sürekli olarak gelen yeni sürümleri destekliyor.
Ne zaman kullanmalı?
Genelde iki farklı yapıda kullanmak mümkün: B2B gibi birden fazla uç noktadan gelen farklı sorgu kaynaklarının cevaplarını karşılamak için yatay büyümenin zorunlu olduğu iş ortamlarında vedağıtık kaynaklardan gerçek zamanlı analitik bilgi toplama, gösterme ve eylem almanın gerekli olduğu durumlarda.
Örnek olarak, çoklu elektronik mağaza açılabilen, ülkemizde de örnekleri hızla yaygınlaşan B2B2C gibi alışveriş sistemlerinde, elektronik AVM’lerde, ödeme sistemi alt yapısı sunan hizmet sağlayıcılarında, yani birden fazla iş ucunun farklı veritabanlarının veya izole veri haznelerinin olduğu ortamlarda kullanmak çok mantıklıdır. 100.00’den hatta 100.0000’den fazla mağaza sahibine aynı anda hizmet vermeye ihtiyacınız varsa, her mağazanın kendisine ait izole verisinin olduğu, en küçüğünden en büyüğüne kadar aynı performans garantisini sunmak istendiğinde, ve temel iş modelinin içinde veri dublikasyonunu önlemek üzere ortak veya referans tablolar kullanılıyorsa Citus ideal bir yapı. Zira kiraladığınız dükkanlara ait verileri birden fazla sunucu sistem üzerine dağıtarak, bir yandan aynı veritabanı şemasını kullanmaya devam ederken, ihtiyaca göre yeni sistemler, veya işlemci bellek ekleyerek hızlı büyümeye olanak sağlıyor. Aynı veritabanı şemasını birden fazla makina üzerinde dağıtmanın yanı sıra, aynı merkezden bu yapıyı yönetmeye, yedeklemeye, erişilebilir kılmaya yönelik ihtiyaçların karmaşıklığını da önlüyor.
Diğer taraftan, binlerce farklı kaynaktan veri topladığınız dağıtık ölçüm sistemini yönetiyorsunuz diyelim, bu sistemler üzerinde paralel çalışan sorgular ile toplama (aggregate) sorgularının cevaplarını saniyenin onda birinde alıp ekrana yansıtmak, zaman serilerine bağlamak ve tarihsel büyük veri setleri oluşturmak istediğinizde Citus ihtyacı kolayca giderebiliyor.
Referans tablolar genellikle ortak kullanılan küçük boyutlu, join sorgularında referans olarak kullanılan tablolar iken, dağıtık tablolar ise büyük veri saklayan veya kiracıdan kiracıya değişen izole tablolardır. Referans ve dağıtık tablolar arasında join sorgu kullanmak mümkündür.
Ne zaman kullanmamalı?
İstemci ile veritabanı sistemi arasında büyük veri transferi gerektiren, sorgu sonuçlarının büyük veri setlerini içerdiği durumlarda kullanılmamalı.
- Uzun süren sorgular içeren geleneksel iş ortamlarında,
- Sürekli değişen sorgular içeren veya uzun ve büyük veri getiren raporlama sistemlerinde,
- Toplam, sonuç veya kısa set dışında büyük veri sonucu dönen ETL ortamlarında,
Citus açık kaynaklı özgür bir yazılımdır. Kurumsal özelliklerle desteklenmiş, bakım destek alabileceğiniz bir kurumsal sürümünün yanı sıra ayrıca bir de açık kaynaklı sürümü mevcuttur. Citusdata firması tarafından SaaS platformu ile pazarlanan ürünün açık kaynaklı sürümünü indirip kullanabilirsiniz.
Kaynaklar:
- Citus Belgeleri: https://docs.citusdata.com/en/v7.0/index.html