3 puan yazan GN⁺ 2023-08-14 | 1 yorum | WhatsApp'ta paylaş
  • LearnDB adlı projeyi tanıtan bir yazı; bu proje, SQLite'a benzer bir ilişkisel veritabanı yönetim sistemi (RDBMS) olup sıfırdan saf Python ile yazılmıştır.
  • Proje, Richard Feynman'ın "Yapamadığım şeyi anlayamam" sözünden ilham alıyor ve veritabanlarına dair derin bir anlayış kazandırmayı hedefliyor.
  • LearnDB, basit bir kod tabanı ve görece tam bir RDBMS uygulaması sunduğu için üzerinde deney yapmak açısından uygun.
  • Zengin bir SQL (learndb-sql) desteği sunuyor; select, from, where, group by, having, limit, order by gibi yapıları destekliyor ve lark kullanarak özel bir lexer ve parser oluşturuyor.
  • Sistem, kullanıcıların REPL üzerinden, Python modülü olarak içe aktararak veya komut dosyası dosyalarını motora vererek RDBMS'e birden fazla yolla bağlanmasına olanak tanıyor.
  • Temel veri yapısı olarak disk tabanlı bir btree implementasyonu kullanıyor.
  • Ancak LearnDB'nin bazı kısıtları var; örneğin kayan noktalı sayı aritmetiğinin basitleştirilmiş bir implementasyonu bulunuyor ve wildcard sütun genişletme gibi genel yardımcı özellikleri desteklemiyor.
  • Yazı, LearnDB'nin nasıl kurulup çalıştırılacağına dair ayrıntılı yönergeler sunuyor; buna sistem gereksinimleri ve testleri çalıştırma adımları da dahil.
  • Yazar, projeyi geliştirirken başvurduğu kaynaklara da yer veriyor; bunlar arasında SQLite Database System: Design and Implementation (1st ed), SQLite dosya biçimi dokümantasyonu ve SQL ifade implementasyonu için Postgres bulunuyor.
  • Kısıtlarına rağmen LearnDB, gerçek bir depolama çözümü olarak kullanılmak için değil, veritabanı iç yapısını anlamaya yönelik bir öğrenme aracı olarak tasarlanmış.

1 yorum

 
GN⁺ 2023-08-14
Hacker News görüşleri
  • Python ile sıfırdan yazılmış bir SQLite klonu olan yeni bir RDBMS (Relational Database Management System) hakkındaki yazı.
  • Python dili, veritabanlarında sık kullanılan C++ veya C gibi dillere kıyasla okunabilirliği ve erişilebilirliği nedeniyle seçilmiş.
  • Proje, veritabanlarının nasıl çalıştığını öğrenmek için eğitici ve faydalı olarak görülüyor.
  • Veritabanı motorunun dağıtık şekilde nasıl çalışabileceğine dair ilgi uyandırıyor.
  • SQLite’ın C# ile yeniden yazıldığı benzer bir projeden bahsediliyor.
  • Proje hızlı çalışacak şekilde tasarlanmamış, ancak karşılaştırma için benchmark sonuçlarını görmeye ilgi var.
  • Yazı, projede kullanılan Python parser kütüphanesi Lark’ı okurlara tanıtmış.
  • Proje, özellikle veritabanları ve Python ile ilgilenenler için veri yapıları ve algoritmaları (DS&A) daha iyi öğrenmenin iyi bir yolu olarak görülüyor.
  • Projenin SQLite test paketinin ne kadarını geçebildiği ve ACID (Atomicity, Consistency, Isolation, Durability) garantileri ya da sorgu planlama/optimizasyonu destekleyip desteklemediği soruluyor.
  • Özellikle C++ ile karşılaştırıldığında, düşük seviyeli eşzamanlılık kontrolü ve depolama yönetimi desteği açısından Python kullanan bu projenin avantajları ve sınırlamaları merak ediliyor.
  • Projenin kodu, okunabilirliği ve çok iyi yorumları nedeniyle övülüyor.