https://github.com/sudeep9/mojo Skip to content Sign up * Product + Features + Mobile + Actions + Codespaces + Copilot + Packages + Security + Code review + Issues + Discussions + Integrations + GitHub Sponsors + Customer stories * Team * Enterprise * Explore + Explore GitHub + Learn and contribute + Topics + Collections + Trending + Skills + GitHub Sponsors + Open source guides + Connect with others + The ReadME Project + Events + Community forum + GitHub Education + GitHub Stars program * Marketplace * Pricing + Plans + Compare plans + Contact Sales + Education [ ] * # In this repository All GitHub | Jump to | * No suggested jump to results * # In this repository All GitHub | Jump to | * # In this user All GitHub | Jump to | * # In this repository All GitHub | Jump to | Sign in Sign up {{ message }} sudeep9 / mojo Public * Notifications * Fork 1 * Star 92 Versioning filesystem for Sqlite License MIT license 92 stars 1 fork Star Notifications * Code * Issues 0 * Pull requests 0 * Actions * Projects 0 * Security * Insights More * Code * Issues * Pull requests * Actions * Projects * Security * Insights sudeep9/mojo This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository. main Switch branches/tags [ ] Branches Tags Could not load branches Nothing to show {{ refName }} default View all branches Could not load tags Nothing to show {{ refName }} default View all tags 1 branch 0 tags Code * Clone HTTPS GitHub CLI [https://github.com/s] Use Git or checkout with SVN using the web URL. [gh repo clone sudeep] Work fast with our official CLI. Learn more. * Open with GitHub Desktop * Download ZIP Launching GitHub Desktop If nothing happens, download GitHub Desktop and try again. Launching GitHub Desktop If nothing happens, download GitHub Desktop and try again. Launching Xcode If nothing happens, download Xcode and try again. Launching Visual Studio Code Your codespace will open once ready. There was a problem preparing your codespace, please try again. Latest commit @sudeep9 sudeep9 Update README.md ... 25fe911 Aug 28, 2022 Update README.md 25fe911 Git stats * 8 commits Files Permalink Failed to load latest commit information. Type Name Latest commit message Commit time mojofs initial Aug 27, 2022 mojokv initial Aug 27, 2022 .gitignore initial Aug 27, 2022 Cargo.toml initial Aug 27, 2022 LICENSE Create LICENSE Aug 28, 2022 README.md Update README.md Aug 28, 2022 build.sh initial Aug 27, 2022 design.md added more description for index Aug 28, 2022 meson.build initial Aug 27, 2022 mojo.c initial Aug 27, 2022 perftest.py initial Aug 27, 2022 test.sql initial Aug 27, 2022 testdb.py initial Aug 27, 2022 user-guide.md initial Aug 27, 2022 View code [ ] MojoFS License Development status Build Usage Create databse using mojo and insert few records Select data Commit the database Write to active version=2 Read old version=1 Read active version=2: Docs Limits Testing Performance Road to v1.0 README.md MojoFS MojoFS is a versioning, userspace filesystem for sqlite DB. It is tailor made for sqlite and not supposed to be used as a general purpose fs. The main feature of the fs is versioning/snapshotting. Only one version is writable and all the old versions are immutable. * MojoFS * License * Development status * Build * Usage + Create databse using mojo and insert few records + Select data + Commit the database + Write to active version=2 + Read old version=1 + Read active version=2: * Docs * Limits * Testing * Performance * Road to v1.0 License I have changed it to MIT. See the LICENSE file. Development status Item Value Quality pre-alpha Maintainance active Build At present only mac/linux is supported. Windows is not supported only because I do not have windows machine. This may change in future. The build expects the following in the environment: 1. Meson Build + Ninja (see here) 2. C compiler (gcc or clang) 3. Rust version v1.59+ 4. sqlite headers + libraries 5. Optional: python3 for testing (most versions should be ok) git clone github.com/sudeep9/mojo cd mojo ./build.sh release Following artifacts will be in build dir: * build/libmojo.dylib (.so extension in linux) => The sqlite extension/vfs * build/mojo-cli => mojo cli tool to manage the file system Usage All the examples below uses sqlite3 binary. However, you can use any bindings of sqlite. Create databse using mojo and insert few records rm -fR a.db sqlite3 <h, pBuf, cnt, offset); SimulateIOError( got = -1 ); #elif defined(USE_PREAD64) got = osPread64(id->h, pBuf, cnt, offset); SimulateIOError( got = -1 ); #else newOffset = lseek(id->h, offset, SEEK_SET); SimulateIOError( newOffset = -1 ); if( newOffset<0 ){ storeLastErrno((unixFile*)id, errno); return -1; } got = osRead(id->h, pBuf, cnt); Road to v1.0 It needs atleast the following: * [ ] Top-notch unit & black box test coverage * [ ] Ease of use e.g debugability, add more mojo-cli admin commands * [ ] Ability to diff the versions * [ ] Ability to delete versions * [ ] Ability to merge versions (not like git merge) * [ ] Ability to recover from corrupted fs. * [ ] Stablize on-disk format * [ ] User guide A lot of the above needs to be clearly defined. About Versioning filesystem for Sqlite Resources Readme License MIT license Stars 92 stars Watchers 3 watching Forks 1 fork Releases No releases published Packages 0 No packages published Languages * Rust 82.4% * Python 13.2% * C 1.9% * Shell 1.5% * Meson 1.0% Footer (c) 2022 GitHub, Inc. Footer navigation * Terms * Privacy * Security * Status * Docs * Contact GitHub * Pricing * API * Training * Blog * About You can't perform that action at this time. You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.