- एक extension जो PostgreSQL टेबल में
SQLITE column type के रूप में SQLite DB को ही एम्बेड करने देता है
- इस तरीके से multitenancy की समस्या हल की जाती है
empty_sqlite से खाली DB बनाएं: CREATE TABLE people (name TEXT NOT NULL, database SQLITE DEFAULT execute_sqlite(empty_sqlite(), 'CREATE TABLE todos (task TEXT)'));
query_sqlite फ़ंक्शन से query की जा सकती है, और execute_sqlite से insert/update किया जा सकता है
SELECT * FROM query_sqlite(database, 'SELECT * FROM todos');
UPDATE people SET database = execute_sqlite(database, 'INSERT INTO todos VALUES (''solve multitenancy'')') WHERE name = 'frectonz';
get_sqlite_text/get_sqlite_integer/get_sqlite_real फ़ंक्शनों से किसी खास column को पढ़ना: SELECT get_sqlite_text(sqlite_row, 0) FROM query_sqlite(database, 'SELECT * FROM todos');
- Rust + Pgrx framework से लिखा गया
- इम्प्लीमेंटेशन विवरण:
- DB को CBOR (Concise Binary Object Representation) encoded
Vec<u8> के रूप में स्टोर किया जाता है
- query चलाने पर
/tmp फ़ोल्डर में random file के रूप में बनाया जाता है। SQLite उस file को लोड करके query चलाता है और नतीजे को JSON encoded values वाली single-row table के रूप में लौटाता है
5 टिप्पणियां
वाह..
हे भगवान...
pgrx - Rust से PostgreSQL एक्सटेंशन डेवलप करने के लिए एक framework
यह थोड़ा अजीब extension लगता है, लेकिन scalable SaaS बनाते समय अगर किसी user को आसानी से DB functionality embed करनी हो, तो शायद ऐसे मौकों पर इसका इस्तेमाल किया जा सकता है।
Hacker News राय
ज़्यादातर relational database management systems nested records को support नहीं करते, और SQL में भी nested tables बनाने या इस्तेमाल करने की पर्याप्त क्षमता नहीं है
PostgreSQL database directory को tar में बाँधकर SQLite में binary blob के रूप में encode करने का आइडिया प्रस्तावित किया गया
इस आइडिया के use case पर सवाल उठाया गया
एक राय यह है कि SQLite column, SQLite के JSON columns से बेहतर होगा
/tmpfile mechanism थोड़ा hack जैसा लगता है, और यह ज़रूरी है या नहीं इस पर सवाल हैVACUUM INTOका उपयोग करके binary blob data लोड करने का तरीका संभव हो सकता हैयदि PostgreSQL इस्तेमाल कर रहे हैं, तो Row Level Security(RLS) के ज़रिए multi-tenancy की समस्या हल की जा सकती है
1NF(प्रथम सामान्य रूप) अपराध?
operators न होने को लेकर असंतोष