इस प्रोजेक्ट के बारे में

tinySQL एक एम्बेडेबल SQL डेटाबेस इंजन है जो Go में लिखा गया है, जो डेटाबेस आंतरिक संरचनाओं को सीखने, स्थानीय टूल, परीक्षण, ब्राउज़र/WASM अनुप्रयोगों, और उन सिंगल-प्रोसेस सेवाओं के लिए उपयोगी है जिन्हें डेटाबेस सर्वर चलाए बिना SQL की आवश्यकता होती है। यह PostgreSQL, MySQL, या क्लस्टर्ड प्रोडक्शन डेटाबेस का ड्रॉप-इन रिप्लेसमेंट नहीं है। ## शुरुआत करना Go 1.26.5+ आवश्यक है। `go get github.com/SimonWaldherr/tinySQL@latest` से इंस्टॉल करें। एक इन-मेमोरी डेटाबेस बनाएं और सरल Go API के साथ SQL चलाएं, जिसमें `?`, `$1`, या `:1` प्लेसहोल्डर के साथ पैरामीटर बाइंडिंग शामिल है। एक database/sql ड्राइवर, स्ट्रीमिंग, कॉलमनर परिणाम, ट्रांजैक्शन, और एक क्वेरी बिल्डर भी उपलब्ध हैं। यही इंजन एक C ABI के माध्यम से अन्य भाषाओं में एम्बेड होता है, जिसमें Rust, Python, Swift, और C के लिए बाइंडिंग हैं। Python और Rust उदाहरण टेबल बनाना, पंक्तियाँ सम्मिलित करना, और बाउंड पैरामीटर के साथ क्वेरी करना दिखाते हैं। ## वर्कफ़्लो - इंटरैक्टिव अन्वेषण: demo, repl, या tinysql CLI - क्वेरी फ़ाइलें या डेटा माइग्रेट करें: query_files, fsql, या migrate - एक स्थानीय SQL सेवा एम्बेड करें: server या tinysqld - ब्राउज़र ऐप बनाएं: query_files_wasm, wasm_browser, या wasm_node - Swift/Xcode ऐप में एम्बेड करें: Swift पैकेज और macOS, iOS, iPadOS के लिए Apple XCFramework - AI टूलिंग या स्थानीय RAG का उपयोग करें: tinysql-mcp-server और RAG गाइड ## क्षमताएँ - **SQL**: DDL/DML, CTEs, joins, grouping, windows, views, triggers, table-valued functions, stored procedures, jobs, और सामान्य SQLite-संगत PRAGMAs - **डेटा**: CSV/TSV, JSON/NDJSON, XML, YAML, Excel, GeoJSON, TopoJSON, KML, OSM XML, routing graphs, Shapefiles, GeoPackage, MBTiles - **सर्च**: Full-text, vector, hybrid search, RAG helpers, regex, JSON, URL, HTML, date, math, bitmap, और hash फ़ंक्शन - **डिप्लॉयमेंट**: Pure-Go embedded API, database/sql driver, Rust/Python/Swift/C bindings, CLI, HTTP/gRPC server, browser/WASM builds, कई स्टोरेज बैकएंड ## GIS, रूटिंग, और टाइल्स ज्यामिति GeoJSON या मान्य GEOMETRY के रूप में संग्रहीत की जाती है। इसमें मापन, predicates, संपादन, स्थानिक खोज, choropleth वर्गीकरण, WKT/WKB, geohash, और Web Mercator helpers शामिल हैं। रूटिंग फ़ंक्शन सामान्य edge टेबल पर Dijkstra या coordinate-guided A* चलाते हैं। Tile फ़ंक्शन Web Mercator और OGC TileMatrix वर्कफ़्लो का समर्थन करते हैं। ## रिट्रीवल और RAG Vector, full-text, और hybrid रिट्रीवल को मेटाडेटा फ़िल्टर और reranking के साथ जोड़ा जा सकता है। RAG_WARM और ROUTE_WARM ट्रैफ़िक से पहले व्युत्पन्न सर्विंग संरचनाएँ तैयार करते हैं। ## स्टोरेज मोड - ModeMemory: परीक्षण, ब्राउज़र/WASM, अस्थायी डेटा - ModeWAL: write-ahead-log रिकवरी के साथ इन-मेमोरी टेबल - ModeDisk: lazy loading के साथ प्रति-टेबल GOB फ़ाइलें - ModeJSON: मानव-पठनीय, diffable प्रति-टेबल JSON - ModeIndex/ModeHybrid: bounded caching के साथ डिस्क-बैक्ड टेबल - ModePagedIndex: MBTiles जैसे बड़े equality lookups - ModeSQLite: .sqlite फ़ाइल जो SQLite टूल के साथ इंटरऑपरेबल है (sqliteimport टैग आवश्यक) वैकल्पिक फ़ाइल समर्थन build tags के साथ बनाया जाता है: SQLite/GeoPackage/MBTiles के लिए `sqliteimport`, ESRI Shapefile/ZIP आयात के लिए `shapefile`। एक `tinysql_minimal` टैग आकार-संवेदनशील एम्बेडिंग जैसे ब्राउज़र WASM बंडल के लिए वैकल्पिक सुविधाओं को हटा देता है, जिससे wasm-opt से पहले stripped symbols के साथ बंडल लगभग 27.46 MB से 15.56 MB (43%) तक सिकुड़ जाता है। ## सेवाएँ और संचालन server HTTP और gRPC API, वैकल्पिक TLS और bearer authentication, साथ ही asynchronous read-only replicas प्रदान करता है। tinysqld health, scheduler, और वैकल्पिक tile endpoints के साथ टिकाऊ DBMS प्रवेश बिंदु है। रेप्लिकेशन asynchronous है; स्वचालित failover, multi-primary writes, और distributed transactions लागू नहीं हैं। ## सीमाएँ - एम्बेडेड और सिंगल-प्रोसेस; server केवल asynchronous primary/replica reads प्रदान करता है - Composite primary/foreign keys, CHECK, target-bearing ON CONFLICT DO UPDATE, SAVEPOINT, ATTACH/DETACH, VACUUM, partial indexes, generated columns, और persistent ANN index files उपलब्ध नहीं हैं - Secondary indexes equality/prefix seeks और numeric ranges को तेज़ करते हैं; indexed point-column bbox/radius क्वेरी के लिए GEO_SEARCH आवश्यक है - GIS validity संरचनात्मक है, पूर्ण topology validation नहीं; GEO_DISSOLVE/GEO_UNION_AGG के लिए साफ़, vertex-aligned सन्निकट polygons आवश्यक हैं - RBAC मोटा और single-table oriented है; encryption WAL-backed modes या metadata files को कवर नहीं करता tinySQL मुख्य रूप से एक शैक्षिक और एम्बेडेबल इंजन है, जो parser, planner, executor, storage backends, और व्यावहारिक एक्सटेंशन को निरीक्षण, परीक्षण, और अनुकूलन के लिए आसान बनाए रखता है।