Bunu Neden İnşa Ettim?
"Frontend uygulamalarını veya hafif ağ istemcilerini doğrudan SQLite ile haberleştirmek genellikle ağır native driver bağlamaları (bindings) veya karmaşık ORM'ler gerektirir. Bu bağımsız C++ daemon'unu yüksek performanslı bir aracı (proxy) olarak tasarladım. Altta yatan SQLite motorunu standart HTTP üzerinden dışa açarak, istemcilerin native veritabanı state'ini yönetmeye gerek kalmadan ham SQL string'leri göndermesine ve temiz JSON veri yapıları almasına olanak tanır."
Mimari & Kararlar
Çekirdek HTTP çoğullama (multiplexing) işlemleri `cpp-httplib` kütüphanesi üzerinden yürütülür. Dağıtım sırasında 'address-in-use' hatalarını önlemek için başlatma (initialization) rutini, Windows Socket API'sine (`Winsock2`) doğrudan kanca atar ve müsait bir TCP portunu kilitlemek için `bind()` üzerinden ağ arayüzlerini sırayla tarar (port probing). Veritabanı motoru SQLite3 C API'sini yoğun şekilde kullanır. Önceden tanımlanmış veri modelleri olmadan (schema-agnostic) rastgele SQL sorgularını işleyebilmek için yürütme döngüsü; çalışma zamanında `sqlite3_column_count` ve `sqlite3_column_name` kullanarak sonuç şemasını (result schema) dinamik olarak analiz eder ve ham C-string işaretçilerini HTTP yanıtı döndürülmeden önce doğrudan bir `nlohmann/json` matrisine haritalar.
Temel Özellikler
- 01.Rastgele SQL sonuç setlerini (result sets) doğrudan JSON matrislerine haritalayan, şemadan bağımsız (schema-agnostic) dinamik yürütme motoru
- 02.Windows Socket API (Winsock2) kullanılarak native işletim sistemi seviyesinde TCP port taraması (probing) ve tahsisi
- 03.Sistem seviyesindeki tablo yansımalarının (reflection) (`sqlite_master`) özel HTTP uç noktaları üzerinden dışa aktarımı
- 04.SQLite imleç iterasyonuna (cursor iteration) doğrudan entegre edilmiş, `cpp-httplib` kullanan thread-safe istek çoğullaması (request multiplexing)