8 Herşey Veritabanında
İlişkisel veritabanları sıkıcıdır. Ama sıkıcı olmak iyidir, özellikle de para söz konusu olduğunda iyidir. MongoDB gibi belge veri tabanları basit ve hızlı başlangıçları nedeniyle popülerdir ancak sorunlar daha sonra verilerinizin tutarlı olması gerektiğinde ortaya çıkar.
Ayrıca, eski sıkıcı teknolojiler farklı ihtiyaçlar için birçok yardımcı programa sahiptir. Örneğin, şema karşılaştırması eski sıkıcı veritabanlarında yaygın olarak desteklenir ancak lütfen aynı kullanım durumu için belge veritabanlarına bakın.
KISS:“Basit ve Aptalca tut” prensipi üzerine uygulamanıza mümkün olduğunca basit başlamalı ve zamanı gelince karışık teknolojileri eklemelisiniz. Bakınız ekteki vidyonun en önemli yansısı: Yazılım Mi̇marlığı kararları erteleme sanatıdır.
8.1 İlişkisel veritabanı birçok kullanım durumu için çok iyi bir ilk tercihtir
Uygulamanızı başlarken her zaman ilişkisel veritabanıyla başlamalısınız. Erken optimizasyon her kötülüğün köküdür. Daha sonra, gerekirse uygulamanıza başka teknolojiler ekleyin.
Birçok kullanım durumu için ilişkisel veritabanları çok iyi bir ilk tercihtir. API’nizi yazarken cephe (facade) tasarım desenini kullanabilirsiniz. Daha sonra gerektiğinde, ihtiyaca göre, farklı teknolojilere geçirebilirsiniz. Bu, aşağıdaki gibi birçok kullanım durumuyla yapılabilir:
- Olaylar (Events)
- Günlükler (Logs)
- Belgeler (Documents)
- Belgelerde arama
- Redis gibi Anahtar/Değer önbelleği (Key/Value cache)
- Tam metin araması (Full text search)
Bu şekilde kafka, redis, elastic search gibi bir sürü teknolojiyle başlamak yerine ilişkisel veritabanıyla başlayıp daha sonra ihtiyaç duyduğunuzda bu teknolojileri ekleyebilirsiniz.
8.2 Veritabanları yığınlarına yeni teknolojiler ekler
- Nesneler
- XML Verileri
- JSON Verileri
- Grafikler
- Vektörler
8.3 Nesne Veritabanı (Object Database)
Oracle, Oracle Nesne-İlişkisel paradigmasını destekler. Nesne veritabanları bir süre popülerdi ve Oracle bu özellikleri dahil etti. Bu nesne özelliklerinin üretim Oracle veritabanlarında kullanıldığını hiç görmedim.
SQL Server ve Sqlite, Nesne İlişkisel paradigmasını desteklemez. Açık kaynaklı veritabanı sistemleri arasında postgres bunu destekler
8.4 XML Verisi
- Oracle’ın yerel xml depolama ve sorgu yetenekleri vardır, bkz. Oracle XML DB.
- SQL Server’ın da yerel xml depolama ve sorgu yetenekleri vardır, bkz. Sql Server XML Data
8.5 JSON verisi
Veritabanı dünyasında sözde nosql hareketinin başarısından sonra, tüm üreticiler JSON verilerini desteklemeye başladı. Oracle, mongodb (lider bir json belge veritabanı) bağlantılarını yerel olarak destekler ve (mongodb uygulamalarında SQL kullanımını destekler)[https://blogs.oracle.com/database/post/proper-sql-comes-to-mongodb-applications-with-oracle].
JSON, kursumuzda ele alacağımız üç veritabanının hepsinde desteklenmektedir.
8.6 Grafik Verisi
- Oracle entegre grafik veritabanı olarak çalışır
- Sql server Grafik işleme desteği.
8.7 Yapay Zeka/Vektör verileri
Oracle veritabanı yeni sürümünde YZ vektör yeteneklerini destekliyor. Yeni Oracle 23 sürümü bu yetenekleri vurgulamak için 23ai olarak adlandırılıyor. - oracle vektör veritabanı adresine bakın. - oracle 23 ai’nin üretken AI uygulamalarını nasıl desteklediğini adresine bakın
8.8 Redis
Rails, veritabanında redis değişimi için bir eklenti sunuyor.
Redis’ten (anahtar-değer veritabanı) SQLite’a bir uygulama geçişinin örneği için aşağıdaki videoyu izleyin.
Bir web uygulama güvenlik duvarı olan Wafris, bu geçişle 3 kat performans iyileştirmesi elde etti. Aşağıdaki blog yazısı: Yeniden Mimarlık: Redis’ten SQLite’a ve video: Mike Buckbee ile Redis’ten SQLite’a Geçiş’e bakın. Lütfen veritabanından okumanın veritabanına yazmaktan çok daha önemli olduğu çok özel bir kullanım durumlarına sahip olduklarını unutmayın.
8.9 Kafka
Yalnızca ekleme günlüğüdür. Bu amaçla veritabanı tablolarını kullanabilirsiniz. Elbette, Kafka gibi terabaytlarca veriye ölçeklenmiyor ancak uygulamanızın bu kadar ölçeklenmeye ihtiyacı olup olmadığını kendinize sorun.
Ayrıca, Oracle’dan Exadata gibi güçlü veritabanı sunucularına sahip işletmeler için bu kadar veri için ölçeklendirme yapmak mümkündür.
8.10 Tam metin araması
Basitçe, tam metin arama motorları kullanıcıların belirli bir arama teriminin bir veya daha fazla örneğini içeren dosyaları bulmak için çok çeşitli belgelerde etkili bir şekilde arama yapmalarını sağlar. Örneğin, Google’ın araması, “sqlite” gibi belirli bir terimi içeren tüm web belgelerini bulmak için tam metin arama motoru işlevi görür.
Çok sayıda belgeyle kullanıldığında tam metin aramaları LIKE operatörlerinden daha hızlıdır.
8.11 Entegre programlama dilleri
Saklanan prosedürler ve işlevler kullanılarak, veritabanları veritabanlarında birlikte veri ve kodla çalışmak için güçlü özellikler sunar. Bu prosedürler ve işlevler prosedürel uzantılarıyla (T-SQL, PL/SQL) veya C#, Java ve R gibi diğer genel amaçlı programlama dilleriyle yazılabilir.
Bu özelliklerin çoğundan pek hoşlanmıyorum ama bazı yazılım şirketleri tarafından yaygın olarak kullanılıyorlar.
Bunlar hakkında daha fazla bilgi için saklı prosedürler Chapter 73 bölümüne bakınız.
8.12 Aynı fikir için diğer bakış açıları:
En iyisi. veritabanları diğerlerine sahip olacak, json, vektör, metin ….
Aşağıda Postgres için bağlantılar var ancak fikir hala aynı.