EdgeDb'de Nedir

[en] Read in English

2023-04-10

Edgedb, açık kaynaklı, ilişkisel bir veritabanı yönetim sistemi (DBMS) ve yeni nesil bir ORM (Object-Relational Mapping) aracıdır. PostgreSQL’nin bir parçası olarak geliştirilmiştir ve Python’da kullanılabilecek şekilde tasarlanmıştır. Edgedb, PostgreSQL ile karşılaştırıldığında daha yüksek verimlilik, daha az kod ve daha iyi güvenlik sağlamak için tasarlanmıştır.

Edgedb’nin tarihi, Rusya merkezli bir yazılım şirketi olan MagicStack tarafından 2018 yılında başlatıldı. Şirket, veritabanı uygulamalarının geliştirilmesi ve yönetimi için daha iyi bir araç sağlamayı amaçlamıştır. Edgedb, 2020 yılında ilk sürümü yayınlandı ve o zamandan beri geliştirme süreci devam etmektedir.

Edgedb’nin diğer veritabanı yönetim sistemlerinden farkı, daha yüksek verimlilik ve daha az kod gerektirmesi ile birlikte daha iyi bir ORM aracı sağlamasıdır. Ayrıca, Edgedb, birden çok dilde yazılan uygulamalar arasında veri bütünlüğü sağlamak için tasarlanmıştır.

Edgedb’nin kurulumu oldukça basittir. Resmi web sitesinden indirilebilen bir kurulum dosyası mevcuttur. Kurulum işlemi, kısa bir süre içinde tamamlanır ve daha sonra Edgedb, Python programlama dili aracılığıyla kullanılabilir.

Edgedb kullanarak, birçok farklı uygulama geliştirebilirsiniz. Örneğin, bir e-ticaret uygulaması için kullanıcıların sipariş geçmişini, sepetlerini ve ödeme bilgilerini depolayabilirsiniz. Edgedb, bu tür uygulamaların geliştirilmesini daha hızlı ve daha kolay hale getirir.

Özetle, Edgedb, yüksek performanslı bir veritabanı yönetim sistemi ve ORM aracıdır. PostgreSQL tabanlı olarak geliştirilmiştir ve Python programlama dili aracılığıyla kullanılabilir. Edgedb’nin diğer veritabanı yönetim sistemlerinden farkı, daha yüksek verimlilik, daha az kod gerektirmesi ve birden çok dilde yazılan uygulamalar arasında veri bütünlüğü sağlamasıdır.

Edgedb, temel olarak bir ilişkisel veritabanı yönetim sistemi (RDBMS) olarak çalışır. Ancak, geleneksel RDBMS’lere kıyasla Edgedb, nesneye yönelik programlama (OOP) prensiplerine dayanan bir veri modeline sahiptir. Bu nedenle, Edgedb’nin ORM aracı, diğer ORM araçlarından daha güçlü ve esnek bir şekilde çalışır.

Edgedb ayrıca, birden çok dilde yazılmış uygulamalar arasında veri bütünlüğünü sağlamak için tasarlanmıştır. Örneğin, bir uygulama Python’da yazılmış olsa da, bir diğeri Rust’ta yazılmış olabilir. Edgedb, bu farklı diller arasında veri bütünlüğü sağlamak için entegre bir çözüm sunar.

Edgedb aynı zamanda güvenlik ve performans konularında da avantajlar sunar. Örneğin, veritabanı yöneticileri, Edgedb’nin sıfır güvenlik açıklarına sahip olduğunu ve saldırılara karşı daha iyi koruma sağladığını bildiriyorlar. Ayrıca, Edgedb’nin performansı da övgüyle karşılanıyor. Edgedb, büyük ölçüde denormalizasyon kullanarak daha yüksek performans sağlar ve birden çok farklı veri türü için optimize edilmiştir.

Edgedb’nin bir diğer avantajı, ölçeklenebilirliğidir. Edgedb, büyük ölçekteki veritabanlarını yönetmek için tasarlanmıştır. Buna ek olarak, Edgedb, diğer veritabanı yönetim sistemleriyle de entegre olabilir. Örneğin, Edgedb’nin PostgreSQL ile entegrasyonu, PostgreSQL tarafından desteklenen tüm araçların Edgedb veritabanı ile kullanılmasını mümkün kılar.

Sonuç olarak, Edgedb, PostgreSQL temel alınarak geliştirilmiş yeni nesil bir veritabanı yönetim sistemi ve ORM aracıdır. Edgedb’nin avantajları arasında OOP prensiplerine dayanan veri modeli, birden çok dilde yazılmış uygulamalar arasında veri bütünlüğü, güvenlik ve performans konularında üstünlük, ölçeklenebilirlik ve diğer veritabanı yönetim sistemleriyle entegrasyon sağlama kabiliyeti bulunmaktadır.

Edgedb’nin kurulumu oldukça kolaydır. Edgedb, Windows, MacOS ve Linux dahil olmak üzere birçok işletim sistemi için destek sunar. Ayrıca, Edgedb, paket yöneticileri ve Docker kullanarak kurulumu daha da kolaylaştırır.

Örnek olarak, Ubuntu 20.04 için kurulumu şu şekilde gerçekleştirebilirsiniz:

Edgedb sunucusu depolarını sisteminize ekleyin:

$ curl https://packages.edgedb.com/keys/edgedb.asc | sudo apt-key add -
$ echo "deb https://packages.edgedb.com/apt focal main" | sudo tee /etc/apt/sources.list.d/edgedb.list

Sisteminizi güncelleyin ve Edgedb sunucusunu yükleyin:

$ sudo apt-get update
$ sudo apt-get install edgedb-server

Edgedb sunucusunu başlatın:

$ sudo systemctl start edgedb-server

Bu kadar! Şimdi Edgedb sunucusu çalışıyor ve veritabanlarınızı oluşturabilirsiniz.

Bir örnek kullanım senaryosu olarak, bir blog uygulaması için Edgedb kullanımını ele alalım. Blog uygulaması, kullanıcılar, gönderiler ve yorumlar gibi verileri depolamak için Edgedb’yi kullanabilir.

İlk adım, Edgedb sunucusunu kurmak ve başlatmaktır. Daha sonra, Edgedb yönetim arayüzüne erişmek için Edgedb CLI’yi yükleyebilirsiniz.

$ sudo apt-get install edgedb-cli

Edgedb CLI’yi kullanarak, kullanıcılar, gönderiler ve yorumlar gibi veriler için veritabanını oluşturabilirsiniz. Ayrıca, veritabanını yönetmek için Edgedb’nin ORM aracı olan edgedb-py modülünü kullanabilirsiniz.

$ pip install edgedb

Örneğin, bir kullanıcı modeli oluşturmak için şu komutları kullanabilirsiniz:

CREATE TYPE User {
    required property username -> str;
    required property password -> str;
    multi link posts -> Post;
};

CREATE TYPE Post {
    required property title -> str;
    required property body -> str;
    required property created_at -> datetime;
    required property updated_at -> datetime;
    required property published -> bool;
    link author -> User;
    multi link comments -> Comment;
};

CREATE TYPE Comment {
    required property body -> str;
    required property created_at -> datetime;
    required property updated_at -> datetime;
    required property approved -> bool;
    link author -> User;
    link post -> Post;
};

Bu şekilde, Edgedb’yi kullanarak bir blog uygulaması için veritabanı oluşturabilirsiniz. Daha sonra, edgedb-py modülünü kullanarak bu veritabanı ile etkileşimde bulunabilirsiniz.

Edgedb’nin diğer veritabanı yönetim sistemlerinden farkı, bir nesne yönelimli veritabanı yönetim sistemi olarak tasarlanmasıdır. Bu, veritabanında depolanan verilerin, gerçek hayattaki nesneler gibi modellenebileceği anlamına gelir. Bu, verilerin daha doğal bir şekilde tanımlanmasını ve yönetilmesini sağlar ve veritabanına yapılan sorguların daha anlaşılır olmasını sağlar.

Edgedb ayrıca, modern bir mimari kullanarak yüksek performanslı ve ölçeklenebilir olmayı amaçlar. Edgedb sunucusu, birçok farklı veritabanı modeli için özel olarak tasarlanmış olan bir veritabanı motoruna dayanır. Bu motor, veritabanı işlemlerini yürütmek için birden fazla iş parçacığı kullanır ve verileri hafızada tutarak disk erişimini minimize eder.

Edgedb, ayrıca güvenliği de önemsemektedir. Veritabanı erişimi, kullanıcılar ve roller aracılığıyla kontrol edilir ve SSL/TLS ile güvenli bir şekilde iletişim kurulmasını sağlar.

Edgedb’nin en dikkat çekici özelliklerinden biri, dönüşüm tablosu olmadan GraphQL sorgularını Edgedb sorgularına otomatik olarak dönüştürebilmesidir. Bu, GraphQL API’lerinin performansını artırır ve geliştiricilerin Edgedb sorguları yazmak yerine GraphQL sorguları yazmalarına olanak tanır.

Sonuç olarak, Edgedb, performansı, güvenliği ve ölçeklenebilirliği ön planda tutarak modern bir veritabanı yönetim sistemi ve ORM aracıdır. Kolay kurulumu, nesne yönelimli veritabanı modeli ve GraphQL sorgularının Edgedb sorgularına otomatik olarak dönüştürülmesi gibi özellikleri, geliştiriciler için zaman ve çaba tasarrufu sağlar.

Edgedb’nin kurulumu oldukça kolaydır. Edgedb, Windows, macOS ve Linux işletim sistemleri için kurulum dosyaları sunar. Ayrıca, Docker imajları ve açık kaynaklı paket yöneticisi olan Homebrew ile de kurulum yapılabilir.

Edgedb’nin kullanımı için, Python’da Edgedb ORM’yi kullanmak veya Edgedb sorgularını doğrudan kullanmak gibi iki seçenek vardır. Edgedb ORM, Edgedb veritabanına erişmek için Python nesnelerini kullanır ve verilerin modellenmesi ve yönetilmesi için özel bir Python diline sahiptir. Edgedb ORM, veritabanındaki verilere kolayca erişebilmenizi sağlar ve verileri doğrudan nesneler olarak kullanmanızı sağlar.

Edgedb sorguları, standart SQL sorgularına benzer bir şekilde yazılır ve Edgedb tarafından otomatik olarak oluşturulur. Edgedb sorguları, Edgedb’nin performans özelliklerinden yararlanarak verileri hızlı bir şekilde sorgulamanızı sağlar. Ayrıca, Edgedb sorguları, GraphQL sorgularına otomatik olarak dönüştürülebilir, bu da geliştiricilerin GraphQL API’leri yazarken daha kolay ve hızlı bir şekilde çalışmasını sağlar.

Örnek olarak, aşağıdaki Edgedb sorgusu, bir blog uygulamasındaki tüm gönderileri getirir:

SELECT Post {title, body, author, tags}

Bu sorgu, Post adlı bir nesnenin title, body, author ve tags adlı alanlarını getirir. Ayrıca, bu sorgu, Edgedb tarafından otomatik olarak oluşturulduğu için performans açısından da avantajlıdır.

Sonuç olarak, Edgedb, kolay kurulumu, nesne yönelimli veritabanı modeli ve yüksek performansıyla dikkat çeken modern bir veritabanı yönetim sistemi ve ORM aracıdır. Edgedb sorguları, standart SQL sorgularına benzer bir şekilde yazılır ve GraphQL sorgularına otomatik olarak dönüştürülebilir, bu da geliştiricilerin daha kolay ve hızlı bir şekilde çalışmasını sağlar.



Bu gibi daha fazla gönderi...

Edgedb Computed Links

2023-04-12 | #edgedb #edgedb-links

Computed Links, iki nesne arasındaki ilişkileri tanımlamak için kullanılan bir yapıdır. Bu bağlantılar, ilişkilendirilmiş nesnelerin birbirine olan ilişkisini hesaplamak için tanımlanmış bir sorgu veya fonksiyon kullanarak oluşturulur. Bu yapı, veritabanında tutulan verilerin tutarlılığını sağlamak için oldukça yararlıdır. Computed Links, veriler arasında sıkı bir şekilde bağlantı kurmanın yanı sıra, veritabanında saklanan verilerin değiştirilmesi veya güncellenmesi durumunda bağlantıların otomatik olarak güncellenmesini sağlar. Ayrıca, sorgulama ve raporlama işlemlerini kolaylaştırmak için de kullanılabilir. Örneğin, bir Computed Link aracılığıyla iki nesne arasındaki ilişkiyi hesaplayarak, sorgulama işlemini daha verimli hale getirebilirsiniz.

Devamı 


Edgedb İlişkiler

2023-04-12 | #edgedb #edgedb-links #edgedb-multi-link

Edgedb’de iki tablo arasında ilişki kurmak için link anahtar kelimesi kullanılır. Linkler, bir objenin başka bir objeyle ilişkilendirilmesine izin verir. Örneğin, bir User tablosu ve bir Article tablosu varsa, Article tablosundaki her bir Article, bir Userya atfedilebilir. Bu durumda, User ve Article tabloları arasında bir ilişki kurabiliriz. İlk olarak, User tablosunda bir id özelliği tanımlarız. Bu özellik, kullanıcının benzersiz bir kimliğini temsil eder. type User { required property id -> uuid; property name -> str; } Ardından, Article tablosunda bir author özelliği tanımlarız.

Devamı 


Edgedb Exclusive Constraint

2023-04-12 | #edgedb #edgedb-constraints

Edgedb’de exclusive constraint (özel kısıtlama) terimi, belirli bir özelliğin benzersiz olmasını veya belirli bir aralıkta olmasını sağlayan bir kısıtlama türünü ifade eder. Örneğin, bir User objesinde email özelliğinin benzersiz olmasını sağlayan bir özel kısıtlama oluşturabilirsiniz. Böylece, her bir User’ın sadece bir kez kaydedilmesini sağlayabilirsiniz. Aşağıdaki örnekte, email özelliğinde benzersizlik sağlayan bir özel kısıtlama tanımlıyoruz: type User { required property id -> uuid; required property name -> str; exclusive constraint unique_email on (.

Devamı 