{"id":16064385,"url":"https://github.com/slatedb/slatedb-go","last_synced_at":"2025-04-09T07:07:45.399Z","repository":{"id":257197726,"uuid":"855577459","full_name":"slatedb/slatedb-go","owner":"slatedb","description":"A cloud native embedded storage engine built on object storage.","archived":false,"fork":false,"pushed_at":"2025-01-24T20:10:51.000Z","size":399,"stargazers_count":72,"open_issues_count":13,"forks_count":12,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-01-28T09:29:02.278Z","etag":null,"topics":["database","embedded-database","golang","lsm-tree","object-storage","rocksdb","storage-engine"],"latest_commit_sha":null,"homepage":"https://slatedb.io","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/slatedb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-09-11T05:20:51.000Z","updated_at":"2025-01-24T20:10:55.000Z","dependencies_parsed_at":"2025-02-05T17:33:18.533Z","dependency_job_id":"057f2428-4d9e-47d3-8587-c111a03b6484","html_url":"https://github.com/slatedb/slatedb-go","commit_stats":{"total_commits":45,"total_committers":2,"mean_commits":22.5,"dds":"0.022222222222222254","last_synced_commit":"56e63cb3d1ff29c4e210056af55949b5091b9fac"},"previous_names":["naveen246/slatedb-go"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/slatedb%2Fslatedb-go","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/slatedb%2Fslatedb-go/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/slatedb%2Fslatedb-go/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/slatedb%2Fslatedb-go/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/slatedb","download_url":"https://codeload.github.com/slatedb/slatedb-go/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247994121,"owners_count":21030050,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["database","embedded-database","golang","lsm-tree","object-storage","rocksdb","storage-engine"],"created_at":"2024-10-09T05:06:46.054Z","updated_at":"2025-04-09T07:07:45.379Z","avatar_url":"https://github.com/slatedb.png","language":"Go","readme":"\u003ca href=\"https://slatedb.io\"\u003e\n  \u003cimg src=\"https://github.com/slatedb/slatedb-website/blob/main/assets/png/gh-banner.png?raw=true\" alt=\"SlateDB\" width=\"100%\"\u003e\n\u003c/a\u003e\n\n![GitHub License](https://img.shields.io/github/license/slatedb/slatedb?style=flat-square)\n\u003ca href=\"https://slatedb.io\"\u003e![slatedb.io](https://img.shields.io/badge/site-slatedb.io-00A1FF?style=flat-square)\u003c/a\u003e\n\u003ca href=\"https://discord.gg/mHYmGy5MgA\"\u003e![Discord](https://img.shields.io/discord/1232385660460204122?style=flat-square)\u003c/a\u003e\n\n## Introduction\n\nslatedb-go is a Go port of [slatedb](https://github.com/slatedb/slatedb)\n\nSlateDB is an embedded storage engine built as a [log-structured merge-tree](https://en.wikipedia.org/wiki/Log-structured_merge-tree). Unlike traditional LSM-tree storage engines, SlateDB writes data to object storage (S3, GCS, ABS, MinIO, Tigris, and so on). Leveraging object storage allows SlateDB to provide bottomless storage capacity, high durability, and easy replication. The trade-off is that object storage has a higher latency and higher API cost than local disk.\n\nTo mitigate high write API costs (PUTs), SlateDB batches writes. Rather than writing every `put()` call to object storage, MemTables are flushed periodically to object storage as a string-sorted table (SST). The flush interval is configurable.\n\nCheckout [slatedb.io](https://slatedb.io) to learn more.\n\n## Get Started\n\n```Go\npackage main\n\nimport (\n   \"context\"\n   \"fmt\"\n   \"log/slog\"\n   \"time\"\n\n   \"github.com/slatedb/slatedb-go/slatedb\"\n   \"github.com/thanos-io/objstore\"\n)\n\nfunc main() {\n   bucket := objstore.NewInMemBucket()\n   ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)\n   defer cancel()\n   db, _ := slatedb.Open(ctx, \"/tmp/testDB\", bucket)\n\n   key := []byte(\"key1\")\n   value := []byte(\"value1\")\n\n   db.Put(key, value)\n   fmt.Println(\"Put:\", string(key), string(value))\n\n   data, _ := db.Get(ctx, key)\n   fmt.Println(\"Get:\", string(key), string(data))\n\n   db.Delete(key)\n   _, err := db.Get(ctx, key)\n   if err != nil \u0026\u0026 err.Error() == \"key not found\" {\n      fmt.Println(\"Delete:\", string(key))\n   } else {\n      slog.Error(\"Unable to delete\", \"error\", err)\n   }\n\n   if err := db.Close(); err != nil {\n      slog.Error(\"Error closing db\", \"error\", err)\n   }\n}\n```\n\n## Features\n\nSlateDB is currently in the early stages of development. It is not yet ready for production use.\n\n## License\n\nSlateDB is licensed under the Apache License, Version 2.0.\n\n## FAQ\n\n1. Why is there a Go port instead of using Go binding ?\n\n   We wanted developers using this library in Go to be able to easily understand and modify(if needed) the internals without having to learn a new language.\n\n   Go developers will also have an option to use Go binding(when it is ready) if they can use cgo/ffi.\n\n\n2. Is there a risk of a drift between the inner workings of the Rust and Go implementation?\n\n   We will try to keep it close to the Rust implementation.","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fslatedb%2Fslatedb-go","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fslatedb%2Fslatedb-go","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fslatedb%2Fslatedb-go/lists"}