প্রকল্প সম্পর্কে
tinySQL হলো Go-তে লেখা একটি এমবেডযোগ্য SQL ডেটাবেস ইঞ্জিন, যা ডেটাবেসের অভ্যন্তরীণ কাঠামো শেখা, লোকাল টুল, টেস্ট, ব্রাউজার/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 অ্যাপে এমবেড করা: macOS, iOS, iPadOS-এর জন্য Swift প্যাকেজ এবং Apple XCFramework
- AI টুলিং বা লোকাল RAG ব্যবহার: tinysql-mcp-server এবং RAG গাইড
## সক্ষমতা
- **SQL**: DDL/DML, CTE, জয়েন, গ্রুপিং, উইন্ডো, ভিউ, ট্রিগার, টেবিল-ভ্যালুড ফাংশন, স্টোরড প্রোসিডিউর, জব এবং সাধারণ SQLite-সামঞ্জস্যপূর্ণ PRAGMA
- **ডেটা**: CSV/TSV, JSON/NDJSON, XML, YAML, Excel, GeoJSON, TopoJSON, KML, OSM XML, রাউটিং গ্রাফ, Shapefile, GeoPackage, MBTiles
- **সার্চ**: ফুল-টেক্সট, ভেক্টর, হাইব্রিড সার্চ, RAG হেল্পার, regex, JSON, URL, HTML, date, math, bitmap এবং hash ফাংশন
- **ডিপ্লয়মেন্ট**: পিউর-Go এমবেডেড API, database/sql ড্রাইভার, Rust/Python/Swift/C বাইন্ডিং, CLI, HTTP/gRPC সার্ভার, ব্রাউজার/WASM বিল্ড, একাধিক স্টোরেজ ব্যাকএন্ড
## GIS, রাউটিং এবং টাইল
জ্যামিতি GeoJSON বা ভ্যালিডেটেড GEOMETRY হিসেবে সংরক্ষিত হয়। এতে মেজারমেন্ট, প্রেডিকেট, এডিটিং, স্পেশিয়াল সার্চ, choropleth ক্লাসিফিকেশন, WKT/WKB, geohash এবং Web Mercator হেল্পার অন্তর্ভুক্ত। রাউটিং ফাংশন সাধারণ এজ টেবিলের উপর Dijkstra বা কোঅর্ডিনেট-গাইডেড A* চালায়। টাইল ফাংশন Web Mercator এবং OGC TileMatrix ওয়ার্কফ্লো সমর্থন করে।
## রিট্রিভাল এবং RAG
ভেক্টর, ফুল-টেক্সট এবং হাইব্রিড রিট্রিভাল মেটাডেটা ফিল্টার ও রির্যাংকিংয়ের সাথে একত্রিত করা যায়। RAG_WARM এবং ROUTE_WARM ট্রাফিকের আগে ডিরাইভড সার্ভিং স্ট্রাকচার প্রস্তুত করে।
## স্টোরেজ মোড
- ModeMemory: টেস্ট, ব্রাউজার/WASM, অস্থায়ী ডেটা
- ModeWAL: write-ahead-log রিকভারিসহ ইন-মেমরি টেবিল
- ModeDisk: lazy লোডিংসহ প্রতি-টেবিল GOB ফাইল
- ModeJSON: মানুষের-পাঠযোগ্য, diffable প্রতি-টেবিল JSON
- ModeIndex/ModeHybrid: সীমাবদ্ধ ক্যাশিংসহ ডিস্ক-ব্যাকড টেবিল
- ModePagedIndex: MBTiles-এর মতো বড় equality লুকআপ
- ModeSQLite: .sqlite ফাইল, SQLite টুলের সাথে ইন্টারঅপারেবল (sqliteimport ট্যাগ প্রয়োজন)
ঐচ্ছিক ফাইল সাপোর্ট বিল্ড ট্যাগ দিয়ে তৈরি হয়: SQLite/GeoPackage/MBTiles-এর জন্য `sqliteimport`, ESRI Shapefile/ZIP ইমপোর্টের জন্য `shapefile`। একটি `tinysql_minimal` ট্যাগ আকার-সংবেদনশীল এমবেডিং যেমন ব্রাউজার WASM বান্ডেলের জন্য ঐচ্ছিক ফিচার বাদ দেয়, যা stripped symbols-সহ wasm-opt-এর আগে বান্ডেল প্রায় 27.46 MB থেকে 15.56 MB (43%)-এ কমায়।
## সার্ভিস এবং অপারেশন
server HTTP ও gRPC API, ঐচ্ছিক TLS ও bearer authentication, এবং অ্যাসিনক্রোনাস রিড-ওনলি রেপ্লিকা প্রদান করে। tinysqld হলো ডিউরেবল DBMS এন্ট্রি পয়েন্ট, যেখানে health, scheduler এবং ঐচ্ছিক টাইল এন্ডপয়েন্ট রয়েছে। রেপ্লিকেশন অ্যাসিনক্রোনাস; স্বয়ংক্রিয় ফেইলওভার, মাল্টি-প্রাইমারি রাইট এবং ডিস্ট্রিবিউটেড ট্রানজ্যাকশন বাস্তবায়িত নয়।
## সীমাবদ্ধতা
- এমবেডেড ও সিঙ্গল-প্রসেস; সার্ভার শুধু অ্যাসিনক্রোনাস প্রাইমারি/রেপ্লিকা রিড দেয়
- কম্পোজিট প্রাইমারি/ফরেন কী, CHECK, টার্গেট-বহনকারী ON CONFLICT DO UPDATE, SAVEPOINT, ATTACH/DETACH, VACUUM, partial index, generated column এবং persistent ANN index ফাইল পাওয়া যায় না
- সেকেন্ডারি ইনডেক্স equality/prefix seek এবং numeric range দ্রুত করে; ইনডেক্সড পয়েন্ট-কলাম bbox/radius কোয়েরির জন্য GEO_SEARCH প্রয়োজন
- GIS ভ্যালিডিটি সম্পূর্ণ টপোলজি ভ্যালিডেশনের বদলে স্ট্রাকচারাল; GEO_DISSOLVE/GEO_UNION_AGG-এর জন্য পরিষ্কার, vertex-aligned সংলগ্ন পলিগন প্রয়োজন
- RBAC মোটামুটি এবং সিঙ্গল-টেবিল-কেন্দ্রিক; এনক্রিপশন WAL-ব্যাকড মোড বা মেটাডেটা ফাইল কভার করে না
tinySQL মূলত একটি শিক্ষামূলক ও এমবেডযোগ্য ইঞ্জিন, যা পার্সার, প্ল্যানার, এক্সিকিউটর, স্টোরেজ ব্যাকএন্ড এবং ব্যবহারিক এক্সটেনশনগুলো পরিদর্শন, টেস্ট ও অভিযোজনের জন্য সহজ রাখে।
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.