MongoDB ve GraphQL: Veri Yapıları Arasındaki Uyumluğa Örnekler

MongoDB ve GraphQL: Veri Yapıları Arasındaki Uyumluğa Örnekler

MongoDB ve GraphQL bir arada nasıl çalışır? Bu yazımızda, MongoDB ve GraphQL arasındaki uyumu anlatıyoruz Örneklerle veri yapısı uyumuna dair önemli konuları ele alıyoruz Verilerinizi daha iyi yönetin ve hızlı raporlama yapın Hemen okuyun!

MongoDB ve GraphQL: Veri Yapıları Arasındaki Uyumluğa Örnekler

MongoDB ve GraphQL, farklı veri yapılarına sahip olan iki popüler araçtır. Bu iki arasındaki uyumluluk, özellikle modern yazılım uygulamalarında oldukça önemlidir. MongoDB, NoSQL veritabanı olarak, GraphQL ise bir sorgulama dilidir. İki arasındaki uyum, sorguların hızlı olmasını, verilerin daha iyi yapılandırılmasını ve daha iyi çalışabilmesini sağlar. Bu makalede MongoDB ve GraphQL arasındaki veri uyumluluğunu örneklerle göstereceğiz.


MongoDB Nedir?

MongoDB, NoSQL veritabanı sistemlerinden biridir. MongoDB, verilerin kaydedilmesini ve yönetilmesini sağlar. Bu veritabanı, gayet ölçeklenebilir ve hızlı bir biçimde çalışır. MongoDB, JSON formatına uygun bir yapıdadır ve görünüm olarak, tablolar yerine collection'lar kullanır. Hiyerarşik yapıdan ziyade düz bir yapı kurar.

MongoDB, birçok veri türünü destekler. Bunlardan bazıları şunlardır: metin, sayı, tarih/zaman, dizi, gömülü belgeler ve nesneler. MongoDB, yüksek performansı ve ölçeklenebilirliği sayesinde, büyük ölçekli projelerde üstün bir performans sergiler. MongoDB, aynı zamanda, açık kaynaklı bir projedir. Bu nedenle, ücretsiz bir şekilde kullanılabilir.

MongoDB'nin Özellikleri
Özellikler Açıklama
Yüksek Performans MongoDB, NoSQL veritabanı sistemleri arasında yüksek performansa sahip bir sistemdir.
Ölçeklenebilirlik MongoDB, ölçeklenebilir bir sistemdir. Yeni sunucular ekleyerek, verilerin işlenmesi hızlandırılabilir.
Esneklik MongoDB, veri modellerinde esnek bir yapı sunar. Veri modelleri kolayca değiştirilebilir.
JSON Formatı MongoDB, verileri JSON formatında saklar. Bu, verilerin taşınması ve kullanımının kolay olmasını sağlar.
Açık Kaynak Kodlu MongoDB, açık kaynak kodlu bir sistemdir. Bu, kullanıcıların sistemi ücretsiz olarak kullanabilmesini sağlar.

GraphQL Nedir?

GraphQL, Facebook tarafından 2012 yılında geliştirilen bir sorgu dili ve çalışma zamanı ortamıdır. GraphQL, birçok veri kaynağına tek bir çağrı ile erişim sağlayabilen bir arayüz sağlar. Bu nedenle, web uygulamalarında büyük ölçekli verilere erişim sağlamak için kullanılan popüler bir araçtır.

GraphQL, REST API'lerine alternatif olarak geliştirilmiştir. REST API'leri, istemcilerin her bir istekte sadece belirli veri noktalarını almasına izin verirken, GraphQL ile istemci doğrudan ihtiyaç duyduğu verileri sağlar. Bu sayede, istemciler veri alma süreçlerinde hızlı bir şekilde ilerleyebilirler. GraphQL aynı zamanda, REST API'lerindeki çeşitli sorunları da çözmeyi amaçlar. Örneğin, REST API'lerde her veri noktası birçok farklı istekle alınabilirken, GraphQL'de bu veri noktasına tek bir çağrı ile erişilir.


MongoDB ve GraphQL Arasındaki Farklar

MongoDB ve GraphQL, verileri depolama, yönetme ve sorgulama işlemlerinde farklı yaklaşımlara sahiptir. Öncelikle MongoDB, NoSQL tabanlı bir veritabanıdır ve belge merkezlidir. Bu, verilerin dokümanlar halinde saklandığı anlamına gelir. Veriler sütunlar ve satırlar şeklinde değil de, birbirine gömülü olan özelliklere sahip JSON benzeri belgeler şeklinde depolanır.

Diğer taraftan, GraphQL, bir API aracılığıyla veri sorgulama işlemlerini gerçekleştirmek için kullanılan bir veri dilidir. GraphQL, belirli verileri sorgularken, diğer verileri görmezden gelebilir. Bu, gereksiz veri transferini önleyerek, verimliliği artırır.

MongoDB GraphQL
Belge merkezli bir veritabanı Bir API aracılığıyla veri sorgulama dilidir
Data'yı dokümanlar halinde saklar Belirli verileri sorgulama ve alırken diğer verileri görmezden gelebilir
Veriler sütunlar ve satırlar yerine birbirine gömülü özelliklerle JSON benzeri belgeler şeklinde depolanır Verileri depolamak yerine sorgulamada kullanılır

MongoDB için Veri Modelleri

MongoDB, ilişkisel veritabanları gibi yapısal bir veritabanı yerine belge tabanlı bir yaklaşım sunar. Bu, her belgenin alanlara sahip olmasını, ancak her alana bir veri türü atanmasını gerektirmez. Bu nedenle document-based olarak adlandırılan bir veri modeli kullanır.

MongoDB'de belgeler, BSON (Binary JSON) formatında saklanır. BSON, JSON'un yanı sıra daha fazla veri türü desteği sunarak daha verimli bir seri hale getirir. Bu belgeler, tüm verileri JSON benzeri biçimlerde depolar ve MongoDB, bu verileri hızlıca okumak ve yazmak için özel bir API sağlar.

Veri modelleri, bir uygulamanın yeniden kullanılabilir bir şekilde tutulabilen verilerinin organizasyonuna karar verir. MongoDB'nin document-based yapısı, geleneksel ilişkisel veritabanlarına göre daha esnek bir şekilde veri modellerinin oluşturulmasını sağlar. Veriler daha az ilişkisel olduğundan, veri tasarımı için daha fazla özgürlük sağlanır.

MongoDB'de belgelerin yapısı, uygulamanın ihtiyacına bağlı olarak değişebilir. Belgelerde hangi alanların yer alacağına karar verebilir, hangi alanların gerekli olduğuna karar verebilir veya belirli bir yapısının olduğuna karar verebilirsiniz. Bu esnekliği kullanmak, bir uygulamanın ihtiyaçlarını daha iyi karşılamasına ve veri modelinin daha ölçeklenebilir olmasına yardımcı olur.

Ayrıca, MongoDB, birbirinden farklı belgeler içeren bir koleksiyonu yönetirken birden çok belgenin paylaşımını da sağlar. Bu, bir uygulama tarafından ihtiyaç duyulan veri modelinde yapılacak değişiklikleri kolaylaştırır ve birkaç ilişkisel tabloyu çok sayıda belgeye gerek kalmadan birleştirebilir.

Sonuç olarak, MongoDB, document-based bir veri modeli sunan esnek bir veritabanı çözümüdür. İhtiyaç duyulan veri modelini oluşturmak için kolaylıkla özelleştirilebilen belgeler kullanır ve bu esneklik, ölçeklenebilir bir veritabanı tasarlamak için çok önemlidir.


GraphQL sorguları Nasıl Çalışır?

GraphQL, özellikle modern web uygulamalarında kullanılan bir API sorgu dili ve çalışma ortamıdır. Bu, verileri hızlı ve verimli bir şekilde sağlamanın yanı sıra, istemcilerin yalnızca ihtiyaç duydukları verileri sorgulamalarına olanak tanır. GraphQL sorguları, şu şekilde çalışır: istemci sorgusu, GraphQL sunucusuna gönderilir ve sunucu sorguya yanıt olarak gerekli verileri veritabanından alır. Bu veriler daha sonra bir JSON yanıtı olarak istemciye geri döndürülür.

GraphQL sorguları, RESTful mimariden farklıdır çünkü birkaç farklı özellik sunar. GraphQL, birden fazla kaynaktan verileri sorgulamanıza olanak tanırken, RESTful mimari, her kaynak için ayrı bir API çağrısı gerektirir. GraphQL ayrıca, gereksiz verilerin ağ trafiğini artırmamasını sağlamak için yalnızca ihtiyaç duyulan verileri getirir.

GraphQL sorguları, birden fazla veri kaynağı arasındaki karmaşık veri modellerini de ele alır. GraphQL, belirli bir veri modeline göre veri sağlama işlemini kolaylaştırmak için, sorguların birimleri olan şemaları kullanır. Şemalar, sorgunun, hangi veri türlerini, hangi alanları ve hangi sorgu parametrelerini kullanacağını belirler. Bu nedenle, GraphQL sorguları, farklı veri kaynaklarına erişmek için kullanışlı bir araçtır.

GraphQL sorgularının yapısı, birkaç farklı anahtar özellik içerir. Bu özellikler aşağıdaki gibidir:

  • Alanlar: GraphQL sorgularında, hangi alanların geri döndürüleceği belirtilir. Bu, ağ trafiğini azaltır ve yalnızca ihtiyaç duyulan verilerin getirilmesini sağlar.
  • Sorgu parametreleri: İstemciler, sorgularında parametre kullanabilirler. Örneğin, bir sorgu, getirilen veri sayısına veya sayfalandırma işlemlerine göre sınırlanabilir.
  • Varyantlar: GraphQL, birden fazla varyant kullanarak, aynı sorguyu farklı şekillerde kullanabilmenizi sağlar. Varyantlar, farklı kullanıcılar veya farklı uygulama senaryoları için ana sorguların kişiselleştirilmesine olanak tanır.

GraphQL sorgularının nasıl çalıştığına dair bu bilgiler, MongoDB ve GraphQL arasındaki veri uyumluluğu hakkında daha ayrıntılı bilgilendirme sağlamaktadır.


MongoDB ve GraphQL Arasındaki Uyumluğun Örnekleri

MongoDB ve GraphQL'in veri yönetimindeki uyumluğu, özellikle büyük projelerde veri uyumluğunu sağlamadaki kolaylıkları nedeniyle popüler hale gelmektedir. MongoDB, GraphQL tarafından kullanılabilecek NoSQL veri yapısıdır. Ayrıca GraphQL, REST API'lerindeki karmaşık sorgulama yapısının yerine basit bir dil sunarak kullanım kolaylığı sağlamaktadır.

MongoDB ve GraphQL arasındaki uyumluğu gösteren örneklerden biri, MongoDB'den GraphQL üzerinden veri çekme sürecidir. MongoDB verileri, GraphQL üzerinden kolayca sorgulanabilir, böylece gerekli olan verileri hızlı bir şekilde almak mümkün olur. Bu özellik, en sık kullanılan veri çekme yöntemlerinden biridir.

Bir diğer örnek ise MongoDB verilerinin GraphQL üzerinden filtrelenmesidir. GraphQL, oluşturduğu yapı sayesinde birçok filtreleme seçeneği sunar. Bu sayede MongoDB verileri, kullanıcının istediği şekilde filtrelenerek alınabilir.

Bir başka örnek, birden fazla veri kaynağını kullanarak veri toplama işlemidir. GraphQL, farklı veritabanlarından veri almayı kolaylaştırır. Bu nedenle, MongoDB verileri GraphQL üzerinden diğer veri kaynaklarıyla da birleştirilebilir.

MongoDB ve GraphQL arasındaki uyumluğun bir diğer örneği de verilerin esnek bir şekilde eklenebilmesidir. MongoDB, verilerin kolayca eklenip çıkarılabilmesine izin verir. Bu özellik, GraphQL üzerinden kullanıcıların programlamada diledikleri gibi özelleştirilebilir.

MongoDBGraphQL
NoSQL veri yapısıREST API'lerindeki karmaşık sorgulama yapısını yerine basit bir dil sunar.
Veri tabanında filtreleme, sıralama ve arama yapar.Çok az kodla çok sayıda kayıt okuyabilir ve birleştirebilir.
Esnek ve genişletilebilir yapısı vardır.Sorgulara yönelik bir veri yönetimi dilidir.

Yukarıdaki örnekler, MongoDB ve GraphQL arasındaki uyumluğun duyurulması amacıyla paylaşılan özelliklerdir. Görüldüğü gibi, iki farklı veritabanı yönetim aracı, kolay ve hızlı bir şekilde bir araya getirilerek işlemler daha kısa sürede tamamlanabiliyor ve daha az kaynak tüketimi ile daha yüksek performans elde edilebiliyor.


Örnek 1: Kayıt Ekleme

MongoDB ve GraphQL arasındaki veri uyumu, kayıt ekleme örneği ile de gösterilebilir. Öncelikle MongoDB veritabanında yeni bir koleksiyon oluşturulmalıdır. Bu koleksiyon için GraphQL şeması açıklaması oluşturulur ve API tarafından sunulur.

Kayıt ekleme işlemi, GraphQL API'si aracılığıyla yapılır. Öncelikle HTTP POST isteği gönderilir. Bu istek, API'nın url'sine yapılan bir POST isteğidir ve yüksek olasılıkla JSON verisi içerir. Gövdesinde, eklemek istediğimiz kaydın özellikleri ve değerleri yer alır.

Kayıt eklemek için, GraphQL API'sinde şunlar yapılabilir:

  1. Kayıt için gerekli olan veriler alınır.
  2. Veritabanında yeni bir kayıt oluşturulur.
  3. Kayıt eklendiğinde oluşturulan kaydın bilgisi geri döndürülür.

Bu örnek, Mongo ve GraphQL arasındaki basit bir etkileşimi gösterir. Veriyi ekleme işlemi, GraphQL API'si aracılığıyla yapılır ve ekleme işlemi MongoDB veritabanında gerçekleştirilir. Bu yöntem, veri tabanı kayıtlarının eklenmesi için çok yönlü bir çözümdür.


Örnek 2: Kayıt Silme

MongoDB ve GraphQL, veri uyumsuzluğu konusunda sorun yaşamamak için birbirleriyle uyum sağlayabilirler. MongoDB, verileri belirli bir yapıda saklamak yerine MongoDB belgesi olarak adlandırılan yapıya uygun belgelere sahiptir. Bu nedenle GraphQL, verileri MongoDB belgesi olarak saklamak için uygun bir yapıya sahiptir. İlgili belgelere erişmek için sorgular "mutation" ve "query" kullanılır. Hadi, kayıt silmeyi nasıl gerçekleştireceğimize bir bakalım.

Bir kaydı MongoDB ve GraphQL kullanarak silmek için, öncelikle "mutation" kullanarak yükleme yapılmalıdır. Yüklemeler, belgeyi okumak veya sorgulamak yerine değiştirmek için kullanılır. İlk adım, yüklemeyi tanımlamaktır. Bu, "deleteBook" gibi bir yükleme tanımıdır. İkinci adım, MongoDB kaydını veritabanından silmek için "id" parametresi kullanmaktır.

Mutation Açıklama
deleteBook(id:ID!) ID'ye sahip belgeyi siler

Bu kayıt silme işlemini gerçekleştirmenin bir diğer yolu, "mutate" operatörü kullanmaktır. Bu seçenekte kullanıcı, silinecek öğenin kimliği (ID) ile birlikte "mutation" ifadesi gönderir (aksi takdirde, bu işlem "query" yöntemiyle de yapılabilir). Aşağıda örnek bir GraphQL sorgusu yer almaktadır:

  mutation {    deleteBook(id:"5f6b0fc13d5b0a2e5844b7e1") {      title      author    }  }

Bu sorgu, "id" parametresine sahip belgeyi silerek "title" ve "author" alanlarını gösterir. Örneğin; buradaki "5f6b0fc13d5b0a2e5844b7e1", hangi belgenin silineceğini belirtir.

  • Bir kaydı MongoDB ve GraphQL kullanarak silmek, veri yapısı uyumsuzluğunu önlemede yardımcı olabilir.
  • "Mutation" operatörü kullanarak belirli bir kaydı MongoDB'den silmek mümkündür.
  • Bu örnekte, "deleteBook" adlı bir "mutation" tanımlanarak "id" parametresi kullanılmıştır.

Örnek 3: Kayıt Güncelleme

MongoDB ve GraphQL kullanarak bir kaydı güncellemek oldukça kolaydır.

Örneğin, bir kullanıcının adını ve soyadını güncellemek istiyorsunuz. Bunun için, ilk olarak MongoDB veri tabanında güncelleme işlemini gerçekleştirmelisiniz. Bunun için, MongoDB'nin örnek kullanımıyla ilgili şu koda bakabilirsiniz:

MongoDB Güncelleme Kodu
db.collection('users').updateOne(  { _id: ObjectId('60b3c1b6b799b7b9e2a373e0') },  { $set: { name: 'Jane', lastName: 'Doe' } });

Bu kod, "users" koleksiyonunda "_id" alanı verilen kullanıcının "name" ve "lastName" alanlarını günceller. MongoDB query'leri oldukça esnektir, bu nedenle güncelleme yapabileceğiniz alanlar ve koşullar oldukça fazladır.

Güncelleme işlemini GraphQL ile gerçekleştirmek istediğinizde ise, öncelikle "type" oluşturmanız gerekir:

GraphQL Type Oluşturma
type Mutation {  updateUser(id: ID!, name: String!, lastName: String!): User!}

Bu kodda "type" olarak "Mutation" seçiyoruz çünkü veri kaynağımızı değiştiriyoruz. "updateUser" alanı ise bizim güncelleme işlemini gerçekleştireceğimiz alanımızdır.

Şimdi, güncelleme işlemini gerçekleştiren GraphQL resolver'ına bakalım:

GraphQL Resolver Örneği
Mutation: {  async updateUser(parent, args, { db }, info) {    const { id, name, lastName } = args;    const result = await db.collection('users').findOneAndUpdate(      { _id: ObjectId(id) },      { $set: { name, lastName } },      { returnOriginal: false }    );    return result.value;  }}

Bu kodda, "updateUser" alanı bir GraphQL mutation'ıdır ve "db" çözümleyici bağlantı nesnesidir. Bu çözümleyici findoneandupdate methodunu kullanarak güncelleme işlemini gerçekleştirir ve sonuç olarak güncellenen kullanıcının verilerini döndürür.

Bu örneklerde, MongoDB ve GraphQL'deki güncelleme işlemleri oldukça benzerdir. Aradaki farklılıkların, MongoDB'nin BSON yapısından kaynaklandığını unutmamak önemlidir. Ancak, GraphQL'in esnek yapıları sayesinde, MongoDB'de zorlu olarak kabul edilen bazı işlemler kolaylıkla yapılabilmektedir.