https://github.com/codenotary/immudb Skip to content Sign up * Why GitHub? + Features + Mobile + Actions + Codespaces + Packages + Security + Code review + Issues + Integrations + GitHub Sponsors + Customer stories * Team * Enterprise * Explore + Explore GitHub + Learn and contribute + Topics + Collections + Trending + Learning Lab + 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 organization All GitHub | Jump to | * # In this repository All GitHub | Jump to | Sign in Sign up {{ message }} codenotary / immudb Public * Notifications * Fork 195 * Star 5.8k * immudb - world's fastest immutable database, built on a zero trust model www.codenotary.com/technologies/immudb Apache-2.0 License 5.8k stars 195 forks Star Notifications * Code * Issues 46 * Pull requests 9 * Discussions * Actions * Projects 0 * Wiki * Security * Insights More * Code * Issues * Pull requests * Discussions * Actions * Projects * Wiki * Security * Insights master 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 96 branches 22 tags Code Latest commit @moshix @jeroiraz moshix and jeroiraz Updated readme ... 01d2f6b Dec 27, 2021 Updated readme Made it easier to read me and included link to more information. 01d2f6b Git stats * 2,911 commits Files Permalink Failed to load latest commit information. Type Name Latest commit message Commit time .chglog chore: fix changelog auto generation repo and releasing template Jun 10, 2020 .github update push.yaml with sonarcloud (#959) Oct 8, 2021 build chore(makefile): remove windows binaries digital signature Dec 10, 2021 cmd chore(cmd/immuclient): return actual login error Dec 15, 2021 configs chore: add pgsql related flags May 17, 2021 embedded sql(embedded/sql): possibility to specify greater value for autoincre... Dec 24, 2021 helm release: v1.2.1 Dec 14, 2021 img update README to include online immudb demo env Jun 16, 2021 pkg unify timestamp value to time.Time conversion Dec 20, 2021 test chore(test): test backward compatibility with previous release (v1.1.0) Dec 3, 2021 tools release: v1.2.0-RC1 Dec 7, 2021 webconsole fix(webconsole): Fix html of the default missing page. Oct 8, 2021 .codeclimate.yml feat: add multiple databases support Jun 30, 2020 .dockerignore fix(Dockerfile): Fix compiling version information in docker images Sep 15, 2021 .editorconfig chore: editorconfig Nov 11, 2019 .gitignore refactor: move immugw in a separate repository Aug 26, 2020 .golangci.yml feat: structured value Apr 14, 2020 .pre-commit-config.yaml chore: remove print tree method Jan 4, 2021 ACKNOWLEDGEMENTS.md update copyright notice Feb 8, 2021 BUILD.md chore(build.md): Add info about removing webconsole/dist folder Sep 14, 2021 CHANGELOG.md release: v1.2.1 Dec 14, 2021 CODE_OF_CONDUCT.md chore: create code of conduct markdown file (#1051) Dec 20, 2021 CONTRIBUTING.md chore: README/doc updates (#791) May 25, 2021 Dockerfile chore: Update codenotary maintainer info Sep 20, 2021 Dockerfile.alma fix: Update Dockerfile.alma maintainer field Sep 21, 2021 Dockerfile.immuadmin chore: Update codenotary maintainer info Sep 20, 2021 Dockerfile.immuclient chore: Update codenotary maintainer info Sep 20, 2021 Dockerfile.rndpass Fix: env variable for immudb password must not be set for random gene... Nov 2, 2021 LICENSE Initial commit Nov 7, 2019 Makefile release: v1.2.1 Dec 14, 2021 README.md Updated readme Dec 27, 2021 codecov.yml test(pkg/server): add tests to server package Jul 16, 2020 go.mod Feat/transaction sdk rebased (#1014) Dec 3, 2021 go.sum Feat/transaction sdk rebased (#1014) Dec 3, 2021 sonar-project.properties Feat/transaction sdk rebased (#1014) Dec 3, 2021 tools.go Feat: embedded REST proxy and web console server (#729) May 8, 2021 View code [ ] immudb Online demo environment Some immudb tech specs Quickstart Getting immudb running: binary Getting immudb running: Docker Getting immudb running: Kubernetes Enabling S3 storage Connecting with immuclient Using immudb Real world examples How to integrate immudb in your application Performance figures Roadmap Contributing README.md immudb License [Black] Documentation Build Status Go Report Card Coverage Homebrew Mentioned in Awesome Go Discord Immudb Careers Tweet about immudb! Artifact Hub Don't forget to this repo if you like immudb! 7M pulls from docker hub! --------------------------------------------------------------------- Detailed documentation can be found at https://docs.immudb.io/ --------------------------------------------------------------------- [immudb-mascot-small] immudb is a database with built-in cryptographic proof and verification. It tracks changes in sensitive data and the integrity of the history will be protected by the clients, without the need to trust the database. It can operate both as a key-value store, and/or as relational database (SQL). Traditional database transactions and logs are mutable, and therefore there is no way to know for sure if your data has been compromised. immudb is immutable. You can add new versions of existing records, but never change or delete records. This lets you store critical data without fear of it being tampered. Data stored in immudb is cryptographically coherent and verifiable. Unlike blockchains, immudb can handle millions of transactions per second, and can be used both as a lightweight service or embedded in your application as a library. immudb runs everywhere, on an IoT device, your notebook, a server, on-premise or in the cloud. immudb can be used as a key-value store or relational data structure and supports both transactions and blobs, so there are no limits to the use cases. Companies use immudb to secure and tamper-evident log data, sensor data, sensitive data, transactions, software build recipes, rule-base data, even artifacts and even video streams. Examples of organizations using immudb today. Online demo environment Click here to try out the immudb web console access in an online demo environment (username: immudb; password: immudb) Your own temporary immudb web console access to start using immudb in an online demo environment Some immudb tech specs Topic Description DB Model Key-Value store with 3D access (tx-key-value), SQL Data scheme schema-free Implementation design Cryptographic commit log with parallel Merkle Tree, (sync/async) indexing with extended B-tree Implementation Go language Server OS(s) BSD, Linux, OS X, Solaris, Windows, IBM z/OS Embeddable Yes, optionally Server APIs gRPC Partition methods Sharding Consistency concepts Immediate Consistency Transaction concepts ACID with Snapshot Isolation (SSI) Durability Yes Snapshots Yes High Read throughput Yes High Write throughput Yes Optimized for SSD Yes Quickstart Getting immudb running: binary You may download the immudb binary from the latest releases on Github . Once you have downloaded immudb, rename it to immudb, make sure to mark it as executable, then run it. The following example shows how to obtain v1.0.0 for linux amd64: wget https://github.com/codenotary/immudb/releases/download/v1.2.1/immudb-v1.2.1-linux-amd64 mv immudb-v1.2.1-linux-amd64 immudb chmod +x immudb # run immudb in the foreground to see all output ./immudb # or run immudb in the background ./immudb -d Getting immudb running: Docker Use Docker to run immudb in a ready-to-use container: docker run -d --net host -it --rm --name immudb codenotary/immudb:latest If you are running the Docker image without host networking, make sure to expose ports 3322 and 9497. Getting immudb running: Kubernetes In kubernetes, use helm for an easy deployment: just add our repository and install immudb with these simple commands: helm repo add immudb https://packages.codenotary.org/helm helm repo update helm install immudb --generate-name Enabling S3 storage immudb can store its data in the Amazon S3 service (or a compatible alternative). The following example shows how to run immudb with the S3 storage enabled: export IMMUDB_S3_STORAGE=true export IMMUDB_S3_ACCESS_KEY_ID= export IMMUDB_S3_SECRET_KEY= export IMMUDB_S3_BUCKET_NAME= export IMMUDB_S3_PATH_PREFIX=testing-001 export IMMUDB_S3_ENDPOINT="https://${IMMUDB_S3_BUCKET_NAME}.s3.amazonaws.com" ./immudb You can also easily use immudb with compatible s3 alternatives such as the minio server: export IMMUDB_S3_ACCESS_KEY_ID=minioadmin export IMMUDB_S3_SECRET_KEY=minioadmin export IMMUDB_S3_STORAGE=true export IMMUDB_S3_BUCKET_NAME=immudb-bucket export IMMUDB_S3_PATH_PREFIX=testing-001 export IMMUDB_S3_ENDPOINT="http://localhost:9000" # Note: This spawns a temporary minio server without data persistence docker run -d -p 9000:9000 minio/minio server /data # Create the bucket - this can also be done through web console at http://localhost:9000 docker run --net=host -it --entrypoint /bin/sh minio/mc -c " mc alias set local http://localhost:9000 minioadmin minioadmin && mc mb local/${IMMUDB_S3_BUCKET_NAME} " # Run immudb instance ./immudb Connecting with immuclient You may download the immuclient binary from the latest releases on Github. Once you have downloaded immuclient, rename it to immuclient, make sure to mark it as executable, then run it. The following example shows how to obtain v1.0.0 for linux amd64: wget https://github.com/codenotary/immudb/releases/download/v1.2.1/immuclient-v1.2.1-linux-amd64 mv immuclient-v1.2.1-linux-amd64 immuclient chmod +x immuclient # start the interactive shell ./immuclient # or use commands directly ./immuclient help Or just use Docker to run immuclient in a ready-to-use container. Nice and simple. docker run -it --rm --net host --name immuclient codenotary/immuclient:latest Using immudb Lot of useful documentation and step by step guides can be found at https://docs.immudb.io/ Real world examples We already learned about the following use cases from users: * use immudb to immutably store every update to sensitive database fields (credit card or bank account data) of an existing application database * store CI/CD recipes in immudb to protect build and deployment pipelines * store public certificates in immudb * use immudb as an additional hash storage for digital objects checksums * store log streams (i. e. audit logs) tamperproof * store the last known positions of submarines * record the location where fish was found aboard fishing trawlers How to integrate immudb in your application We have SDKs available for the following programming languages: 1. Java immudb4j 2. Golang (client package in the immudb repo) 3. .net immudb4dotnet 4. Python immudb-py 5. Node.js immudb-node To get started with development, there is a quickstart in our documentation: or pick a basic running sample from immudb-client-examples. Our immudb Playground provides a guided environment to learn the Python SDK. immudb playground to start using immudb in an online demo environment We've developed a "language-agnostic SDK" which exposes a REST API for easy consumption by any application. immugw may be a convenient tool when SDKs are not available for the programming language you're using, for experimentation, or just because you prefer your app only uses REST endpoints. Performance figures immudb can handle millions of writes per second. The following table shows performance of the embedded store inserting 1M entries on a machine with 4-core E3-1275v6 CPU and SSD disk: Entries Workers Batch Batches time (s) Entries/s 1M 20 1000 50 1.061 1.2M /s 1M 50 1000 20 0.543 1.8M /s 1M 100 1000 10 0.615 1.6M /s You can generate your own benchmarks using the stress_tool under embedded/tools. Roadmap The following topics are important to us and are planned or already being worked on: * Data pruning * Compression * compatibility with other database storage files * Easier API for developers * API compatibility with other, well-known embedded databases Contributing We welcome contributors. Feel free to join the team! Learn how to build immudb components in both binary and Docker image form. To report bugs or get help, use GitHub's issues. immudb is Apache v2.0 License. immudb re-distributes other open-source tools and libraries - Acknowledgements. About immudb - world's fastest immutable database, built on a zero trust model www.codenotary.com/technologies/immudb Topics go verify performance immutable sql database replication key-value verification pci-dss cryptographic compliance merkle-tree immutable-database gdpr zero-trust timetravel tamper-evident auditable tamperproof Resources Readme License Apache-2.0 License Code of conduct Code of conduct Stars 5.8k stars Watchers 78 watching Forks 195 forks Releases 19 v1.2.1 (ACID support, GDPR, Golang stdlib support and improved SQL compatibility) Latest Dec 14, 2021 + 18 releases Packages 0 No packages published Used by 35 * @codenotary * @0ctanium * @SimoneLazzaris * @tauu * @SimoneLazzaris * @SimoneLazzaris * @codenotary * @codenotary + 27 Contributors 36 * @jeroiraz * @mmeloni * @padurean * @leogr * @ameingast * @byo * @Gjergj * @vchain-us-mgmt * @dmacvicar * @SimoneLazzaris * @joe-dz + 25 contributors Languages * Go 97.5% * Shell 1.4% * Yacc 0.4% * Makefile 0.3% * Roff 0.1% * Dockerfile 0.1% * Other 0.2% * (c) 2021 GitHub, Inc. * 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.