- PostgreSQL tablolarına
SQLITE sütun tipiyle SQLite veritabanının kendisini gömmeyi sağlayan bir eklenti
- Bu yöntemle multitenancy sorununu çözüyor
empty_sqlite ile boş bir veritabanı oluşturma: CREATE TABLE people (name TEXT NOT NULL, database SQLITE DEFAULT execute_sqlite(empty_sqlite(), 'CREATE TABLE todos (task TEXT)'));
query_sqlite fonksiyonuyla sorgulama yapılabiliyor, execute_sqlite ile insert/update yapılabiliyor
SELECT * FROM query_sqlite(database, 'SELECT * FROM todos');
- `UPDATE people SET database = execute_sqlite(database, 'INSERT INTO todos VALUES (''solve multitenancy'')') WHERE name = 'frectonz';
- Belirli bir sütunu
get_sqlite_text/get_sqlite_integer/get_sqlite_real fonksiyonlarıyla okuma: SELECT get_sqlite_text(sqlite_row, 0) FROM query_sqlite(database, 'SELECT * FROM todos');
- Rust + Pgrx framework'ü ile yazılmış
- Uygulama detayları:
- Veritabanı, CBOR (Concise Binary Object Representation) ile kodlanmış
Vec<u8> olarak saklanıyor
- Sorgu çalıştırılırken
/tmp klasöründe rastgele bir dosya oluşturuluyor. SQLite bu dosyayı yükleyip sorguyu çalıştırıyor ve sonucu, JSON ile kodlanmış değerler içeren tek satırlı bir tablo olarak döndürüyor
5 yorum
Vay be..
Aman Tanrım...
pgrx - Rust ile PostgreSQL uzantıları geliştirmek için bir framework
Biraz tuhaf bir eklenti gibi duruyor ama ölçeklenebilir bir SaaS geliştirirken kullanıcının basitçe veritabanı işlevlerini gömmesi gereken durumlarda işe yarayabilir diye de düşünüyorum.
Hacker News yorumları
Çoğu ilişkisel veritabanı yönetim sistemi iç içe kayıtları desteklemiyor ve SQL de iç içe tablolar oluşturup kullanmak için yeterli özellik sunmuyor
PostgreSQL veritabanı dizinini
tarile paketleyip SQLite içinde ikili blob olarak kodlama fikri öneriliyorBu fikrin kullanım senaryoları sorgulanıyor
SQLite sütununun, SQLite'ın JSON sütunlarından daha iyi olacağı yönünde bir görüş var
/tmpdosya mekanizmasının biraz hack gibi göründüğü ve gerçekten gerekli olup olmadığı sorgulanıyorVACUUM INTOkullanarak ikili blob verisini yüklemek mümkün olabilirPostgreSQL kullanılıyorsa, Row Level Security (RLS) ile multi-tenancy sorununun çözülebileceği belirtiliyor
1NF (birinci normal form) suçu mu?
Operatör eksikliğine yönelik bir şikayet var