Couchbase Veritabanına Giriş 👩‍🚀🌌

Merve Yıldırım
inventiv
Published in
6 min readJun 4, 2024

“Data is the new oil”: Couchbase Veritabanına Giriş 🛢️

Günümüzün dijital çağında, veri daha önce hiç olmadığı kadar önemli bir kaynak haline geldi. Bilgilerimiz, işletmelerimiz ve uygulamalarımız hızla büyüdükçe, bu veriyi düzenlemek, saklamak ve erişmek giderek karmaşıklaşmaktadır. İşte bu noktada “Data is the new oil” (Veri günümüzün petrolü gibidir) ifadesi önem kazanıyor. Çünkü veri, modern dünyanın çarklarını döndüren ve inovasyonun itici gücü haline gelmiştir.

Ancak bu verinin gerçek değeri, veriden başlayarak bilgiye ve sonunda “knowledge” haline gelme yolculuğunda yatmaktadır. Veri işlenip anlamlandırıldığında, işletmeler daha iyi kararlar alabilir, ürünlerini optimize edebilir ve müşterileriyle daha derin ve kişiselleştirilmiş etkileşimler kurabilirler. Bu süreç, bilgiye dönüşümün önemini vurgular.

“Data” (veri), işletmelerin temel kaynağıdır. “Information” verilerin düzenlenmesi ve yorumlanması ile elde edilir ve işletmelere netlik sağlar. Sonunda, bu information “knowledge” haline gelir ve iş dünyasında stratejik bir varlık haline gelir, rekabet avantajı sağlar ve yenilikçi çözümlerin temelini oluşturur.

Bu makalede, bu değerli veriyi işlemek, yönetmek ve kullanmak için Couchbase NoSQL veritabanını keşfedeceğiz. Couchbase, veri yönetimi ve dağıtık sistemlerin dünyasına kapılarınızı açacak bir anahtar gibidir. Başlayalım!

Couchbase Nedir? 📜📦

Couchbase, document ve key-value tabanlı, memory-first architecture yapısına sahip dağıtık ve yüksek performanslı bir NoSQL veritabanıdır. Temelde JSON tabanlı belge verilerini depolamak ve yönetmek için tasarlanmış olan Couchbase, özellikle büyük ölçekli, hızlı ve ölçeklenebilir uygulamalar için ideal bir çözüm sunar.

LinkedIn, Cisco, Orbitz, Salesforce.com, Zynga, eBay ve PayPal gibi şirketler ve diğer yüzlercesi etkileşimli web uygulamaları ve mobil uygulamalar için CouchBase’i kullanırlar.

Couchbase’in Temel Özellikleri 🔎👀

  • Couchbase, document-oriented, memory-first mimari yapısına sahip bir NoSQL veritabanıdır.
  • N1QL adı verilen bir sorgulama dili vardır. (Sorgulama dili olarak T-SQL’e benzemektedir.)
  • Veriler JSON olarak tutulur.
  • Kolay kurulum ve schemaless yapısı olması veri tipi tutma zorunluluğunu ortadan kaldırmaktadır.
  • Memory first mimarisine sahip olduğu için oldukça hızlıdır. (Veriler öncelikle memory’de tutulur, daha sonra işlenir).
  • MongoDB’deki gibi Document index’lemesi ile sorgularımızda büyük avantajlar sağlayabilir.
  • Cluster mimarisi üzerinde çalışabilen Couchbase, verileri farklı node’lar üzerine dağıtabilir.
  • Full-Text Search özelliğine sahiptir.
  • Geçiçi dokümanlar oluşturmak için TTL (Time-to-Live) özelliği vardır. Geçerliliği belirli bir süre olacak şekilde sms veya şifre sıfırlama linki vb. (Detaylı bilgi için bknz.) Örneğin bir şifre sıfırlama linki oluşturduğumuzda ve geçerlilik süresi 1 saat verilebilir.
  • SQL veritabanlarında çok sık kullandığımız Id’leri auto increment olarak tanımlarız ve her yeni kayıtta değeri 1 artar. Couchbase’de bu yapı yerine counter yapısı mevcut. Counter bize belirttiğiniz değerlerde bir veri oluşturur. Böylelikle, sürekli artan ve eşsiz bir değere sahip olmuş oluruz.
  • Replication desteği mevcuttur. (Replication veritabanlarında yük arttığı zaman uygulanır.)
  • CAP (Consistency, Availability, Partition Tolerance) ilkesinin Consistency (Tutarlılık) ve Availability (Erişilebilirlik) şartlarını sağlar. (CAP ilkesi ile ilgili detaylı bilgi için bknz.)
  • Verilerimizi tutarlı bir şekilde veritabanında barındırmak istersek Couchbase’in Durability özelliğini kullanmalıyız. Bu özelliği kullandığımızda veriler disk üzerine yazılarak tutarlılık sağlanır. [1]

Couchbase Sunucusu birden fazla hizmet sunar. Bu hizmetler, birbirinden bağımsız bir şekilde dağıtılabilir, bakımı yapılabilir ve tedarik edilebilir, böylece Çok Boyutlu Ölçeklendirme’yi mümkün kılar. Örneğin, Couchbase Veri, İndeks, Sorgu ve Arama Hizmetlerini çalıştıran bir geliştirme ortamı, beş düğümden (node) oluşan bir kümenin her düğümünde her birinin bir örneğine izin verebilir.

Couchbase avantajlı bir tercih haline getiren, kaynak kullanımını artırmak ve iş yükünü dengelemek için elastik bir mimari kullanmasıdır. Bunun için klasik bir yöntem olarak, kullanılan ana servisleri farklı düğümlere dağıtır.

Sunulan hizmetlerin tam listesi 🎯 :

Veri (Data): Anahtarla belirtilen veri öğelerinin saklanmasını, ayarlanmasını ve alınmasını destekler.

Sorgu (Query): N1QL sorgu dilinde belirtilen sorguları ayrıştırır, sorguları yürütür ve sonuçları döndürür. Sorgu Hizmeti hem Veri hem de Dizin hizmetleriyle etkileşimli çalışır.

Dizin (Index): Sorgu Hizmeti tarafından kullanılmak üzere dizinler oluşturur.

Arama (Search): Özel olarak ‘Tam Metin Aramaya’ yönelik dizinler oluşturur. Bu, dile duyarlı aramayı destekler; kullanıcıların örneğin güzellik kelimesini aramasına ve ayrıca güzellik ve güzel için sonuçlar elde etmesine olanak tanır.

Analitik (Analytics): Büyük, uzun süreli ve bellek ile CPU kaynaklarını yoğun bir şekilde tüketen birleştirme (join), kümeleme (set) ve gruplama (aggregation) işlemlerini destekler.

Olay Oluşturma (eventing): Verilerdeki değişikliklerin neredeyse gerçek zamanlı olarak işlenmesini destekler: kod, hem belge değişimlerine yanıt olarak hem de zamanlayıcılar tarafından planlandığı şekilde yürütülebilir. Trigger veya rapor oluşturmada kullanılan servistir.

Yedekleme (backup): Belirli bireysel paketler veya kümedeki tüm paketler için tam ve artımlı veri yedeklemelerinin hem planlanmasını hem de anında yürütülmesini destekler. Ayrıca önceden yapılmış yedeklemelerin birleştirilmesinin planlanmasına ve anında yürütülmesine de olanak tanır.

Couchbase Rebalance ile Up-Down Yönetimi 🆘🚨

Couchbase’de, Bucket yapısı ‘Active’ ve ‘Replica’ olarak ikiye ayrılır. Replica, Bucket’ların yedek kopyasını tutar. Active ve Replica verileri, veri kaybını önlemek için farklı düğümlerde (node) saklanır. Eğer Active Bucket’a sahip düğüm erişilemez (down) hale gelirse, etkisiz hale gelen Active Bucket’ın Replicası otomatik olarak etkinleşir (up status) ve verilere kesintisiz erişim sağlamaya devam eder, herhangi bir işlem veya zaman kaybı olmadan. Etkisiz hale gelen node tekrar erişilebilir hale geldiğinde, Bucket’ın Replicası başka bir düğümde çalışmaya devam eder. Bu sürece ‘Rebalance’ adı verilir ve Couchbase tarafından otomatik olarak gerçekleştirilir.

Bucket’ın replica sayısı Couchbase Web UI üzerinden Bucket oluştururken veya sonradan ayarlanabilir.

RDBMS ve Couchbase arasındaki farklar 🌚🌞

MSSQL, MySQL ve PostgreSQL gibi ilişkisel veritabanlarında (RDBMS) veriler tablolarda tutulurken, Couchbase’de ise Bucket adı verilen mantıksal yapılarda saklanır. Bucket’da veriler 3 farklı şekilde depolanır:

  • Couchbase Bucket: Verileri hem belleğe hem de diske yazar.
  • Memcached Bucket: Verileri yalnızca belleğe yazar.
  • Ephemeral Bucket: Verileri geçici olarak bellekte tutar.

Query Örnekleri

{
"id": "customer_123",
"name": "Musteri Adı",
"contactInfo": {
"email": "musteri@email.com",
"phoneNumber": "555-123-4567",
"address": {
"street": "123 Sokak",
"city": "Istanbul",
"postalCode": "34000"
}
},
"orders": [
{
"orderNumber": "ORD12345",
"orderDate": "2023-09-29",
"totalAmount": 250.0
},
{
"orderNumber": "ORD67890",
"orderDate": "2023-09-28",
"totalAmount": 150.0
}
]
}

“ornekBucket” adlı Bucket’ta depolandığını varsaydığımız örnekteki dokümanımızda sub-document özelliğinin uygulandığını görebiliriz.

Bu dokümanda ‘address.city’ değeri ‘Istanbul’ olan dokümana bu şekilde basit bir sorgu ile inner join yapmak zorunda kalmadan erişebiliriz.

SELECT * FROM ornekBucket WHERE address.city = "Istanbul";

Diğer NoSQL veritabanlarının aksine Couchbase in sub-document özelliği ile sadece doküman içerisinde ki bir alt dokümanı ya da doküman içerisindeki bir değeri güncelleyebiliriz.

SELECT * FROM ornekBucket WHERE contactInfo.address.city = "Istanbul";

Sorgusu ile belirli bir şehirdeki müşterileri listeleyebiliriz.

Ya da

SELECT * FROM ornekBucket WHERE ANY order IN orders SATISFIES DATE_DIFF_STR(order.orderDate, "2023-09-28", "day") >= 0 AND DATE_DIFF_STR(order.orderDate, "2023-09-29", "day") <= 0 END;

Sorgusu ile belirli bir tarih aralığındaki siparişleri listeleyebiliriz.

Sonuç 🌟

Sonuç Couchbase, NoSQL veritabanı dünyasında güçlü ve esnek bir çözüm sunarak, verilerin yönetimi ve işlenmesi için yenilikçi yaklaşımlar sağlamaktadır. Document ve key-value tabanlı yapısı, yüksek performansı, esnek ve ölçeklenebilir mimarisi ile modern uygulamaların ihtiyaçlarını karşılamakta oldukça etkilidir. Özellikle büyük ölçekli, hızlı ve dinamik veri işlemlerine ihtiyaç duyan işletmeler için ideal bir çözüm sunan Couchbase, sunduğu çeşitli hizmetler ve özelliklerle veri yönetimini daha verimli ve kullanıcı dostu hale getirmektedir. Couchbase’in sunduğu yenilikçi özellikler ve kolaylıklar, günümüzün veri odaklı dünyasında işletmelerin rekabet avantajı elde etmelerine ve daha etkin stratejik kararlar almalarına yardımcı olur. Couchbase ile verilerinizi güvenli, tutarlı ve performanslı bir şekilde yöneterek, dijital dönüşümünüzde önemli bir adım atabilirsiniz.

Couchbase Kurulum ve Konfigürasyon Devam Yazısında Görüşmek Üzere ! 🤗👋

--

--