benim özel bir SQL oluşturucu ( Dialect ) benioku dosyasına dayalı bir cevap sağlayacaktır
(düz metin izlenir, kitaplığa özgü referanslar kaldırılır)
Gereksinimler
- Birden çok DB satıcısını destekleyin (örn. MySQL, PostgreSQL, SQLite, MS SQL / SQL Server, Oracle, DB2, ..)
- Yeni DB'lere kolayca genişletilebilir (tercihen, uygulamadan bağımsız bir yapılandırma ayarı aracılığıyla)
- Modülerlik ve uygulamadan bağımsız aktarılabilirlik
- Esnek ve Sezgisel API
Özellikleri
- dilbilgisi tabanlı şablonlar
- özel yumuşak görünümler desteği
- db soyutlama, modülerlik ve aktarılabilirlik
- hazırlanmış şablonlar
- veri çıkışı
Yukarıdaki özellikler ve gereksinimleri bir SQL soyutlama oluşturucu kullanmak nedenlerini kroki düşünüyorum
Yukarıdaki özelliklerin çoğu çoğu SQL oluşturucuları tarafından desteklenmektedir (her ne kadar listelenenlerin hepsini desteklediğini düşünmüyorum)
Kullanım örneği örnekleri:
- Birden fazla DB satıcısıyla çalışabilen (temel kod değişikliği olmadan) CMS platformu
- DB satıcısının değişebildiği ve / veya dB şemalarının dinamik olduğu özel uygulama kodu (bu, birçok sorgunun kodlanamayacağı, ancak kodun değişikliklere karşı sağlam olması için yine de yeterince soyutlanması gerektiği anlamına gelir)
- Üretimde kullanılandan farklı bir DB ile prototip oluşturma (en azından bazı kodlar için yinelenen kod tabanı gerektirir)
- Uygulama kodu belirli DB sağlayıcısına ve / veya uygulamasına sıkıca bağlı değildir (aynı DB satıcısında bile, örneğin DB satıcısının farklı sürümlerinde), bu nedenle daha sağlam, esnek ve modülerdir
- Alışılmış birçok sorgu ve veri çıkışı çerçevesi çerçevenin kendisi tarafından ele alınır ve genellikle bu hem en uygun hem de daha hızlıdır
Son olarak, sahip olduğum bir kullanım örneği. temel DB şemasının (wordpress) yapılması gereken veri sorgularının türü için uygun olmadığı bir uygulama inşa ediyordum, ayrıca bazı WP tablolarının (örneğin mesajların) kullanılması gerekiyordu (bu yüzden tamamen yeni tablolara sahip olmak) çünkü tüm uygulama verileri bir seçenek değildi).
Bu durumda, modelin özel / dinamik koşullarla sorgulanabileceği bir MVC benzeri uygulama yapabilmek, sorgulamayı neredeyse bir kabus haline getirmiştir. Birleştirme ile 2-3 tabloya kadar sorgulamayı desteklemeniz gerektiğini ve hangi tablonun neyle birleştirileceğini görmek için koşulları filtrelediğinizi ve ayrıca gerekli takma adlara dikkat ettiğinizi düşünün.
Açıkçası bu bir sorgu soyutlama kullanım örneğiydi ve daha da fazlası, özel yumuşak görünümleri (birleştirilmiş tabloların modele uygun tek bir özel tabloymuş gibi bir araya getirme ) tanımlayabilme yeteneğine (veya en azından büyük ölçüde faydalanmaya) ihtiyaç duyuyordu. . Sonra çok daha kolay, daha temiz, modüler ve esnekti. Başka bir yönde uygulama (kod) ayrıca sorgu soyutlama katmanını (db şeması) normalleştirme aracı olarak kullanmıştır . Bazılarının dediği gibi, geleceğe yönelikti .
Yarın, insanlar bazı ekstra seçeneklere veya verilere ihtiyaç duyduklarına karar verirlerse, bunu birkaç satırda modele eklemek ve iyi çalışırlar. Buna ek olarak, yarın, insanlar artık wordpress'i kullanmak istemediklerine karar verirlerse (uygulama wordpress'e bir eklenti olarak gevşek bir şekilde bağlandığından), birkaç satırdaki modelleri değiştirmek ( sadece tanımı ) nispeten kolaydır. yeni şemaya uyum sağlamak için kod.
Neyi kastettiğimi anla?