C++ SQLite HTTP Proxy & JSON Serializer
Yerel bir SQLite veritabanı üzerinde ham SQL sorgularını çalıştıran ve elde edilen imleçleri (cursor) dinamik olarak yapılandırılmış JSON verilerine serileştiren, statik olarak derlenmiş, şemadan bağımsız (schema-agnostic) HTTP daemon'u.
Teknoloji yığını
- Diller
- Çatılar & kütüphaneler
- Araçlar
Performans & metrikler
- Geleneksel backend çalışma zamanlarındaki (Node.js/JVM) ağır Garbage Collection duraklamaları atlanarak doğrudan native makine koduna derlemeyle elde edilen son derece düşük gecikme süresi (low latency)
- Sonuç seti iterasyonu sırasında
sqlite3_column_textraw pointer'larının kopyalama yapılmadan (zero-copy) doğrudan JSON response buffer'ına dökülmesi
Neden geliştirdim?
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
- 01Rastgele SQL sonuç setlerini (result sets) doğrudan JSON matrislerine haritalayan, şemadan bağımsız (schema-agnostic) dinamik yürütme motoru
- 02Windows Socket API (Winsock2) kullanılarak native işletim sistemi seviyesinde TCP port taraması (probing) ve tahsisi
- 03Sistem seviyesindeki tablo yansımalarının (reflection) (
sqlite_master) özel HTTP uç noktaları üzerinden dışa aktarımı - 04SQLite imleç iterasyonuna (cursor iteration) doğrudan entegre edilmiş,
cpp-httplibkullanan thread-safe istek çoğullaması (request multiplexing)