{"id":13632771,"url":"https://github.com/simerplaha/SwayDB","last_synced_at":"2025-04-18T05:33:19.859Z","repository":{"id":29285247,"uuid":"121126549","full_name":"simerplaha/SwayDB","owner":"simerplaha","description":"Persistent and in-memory key-value storage engine for JVM that scales on a single machine.","archived":false,"fork":false,"pushed_at":"2024-06-12T01:03:42.000Z","size":20909,"stargazers_count":293,"open_issues_count":83,"forks_count":16,"subscribers_count":16,"default_branch":"master","last_synced_at":"2024-10-13T04:21:05.591Z","etag":null,"topics":["database","embeddable","in-memory","java","jvm","key-value-store","kotlin","multiple-disks","persistent","scala","storage-engine","type-safe"],"latest_commit_sha":null,"homepage":"https://swaydb.simer.au","language":"Scala","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/simerplaha.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["simerplaha"]}},"created_at":"2018-02-11T13:33:26.000Z","updated_at":"2024-09-28T16:04:46.000Z","dependencies_parsed_at":"2024-10-13T04:21:02.618Z","dependency_job_id":"6d657200-8d14-4849-9c64-52dc5de738d1","html_url":"https://github.com/simerplaha/SwayDB","commit_stats":null,"previous_names":[],"tags_count":56,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simerplaha%2FSwayDB","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simerplaha%2FSwayDB/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simerplaha%2FSwayDB/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simerplaha%2FSwayDB/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/simerplaha","download_url":"https://codeload.github.com/simerplaha/SwayDB/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223118433,"owners_count":17090260,"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","embeddable","in-memory","java","jvm","key-value-store","kotlin","multiple-disks","persistent","scala","storage-engine","type-safe"],"created_at":"2024-08-01T22:03:15.306Z","updated_at":"2024-11-09T01:30:49.798Z","avatar_url":"https://github.com/simerplaha.png","language":"Scala","readme":"# \u003cimg src=\"docs/swaydb_logo.png\" align = \"right\"/\u003e SwayDB [![Gitter Chat][gitter-badge]][gitter-link] [![Build status][build-badge]][build-link] [![Maven central][maven-badge]][maven-link]\n\n[gitter-badge]: https://badges.gitter.im/Join%20Chat.svg\n\n[gitter-link]: https://gitter.im/SwayDB-chat/Lobby\n\n[maven-badge]: https://img.shields.io/maven-central/v/io.swaydb/swaydb_2.12.svg\n\n[maven-link]: https://search.maven.org/search?q=g:io.swaydb%20AND%20a:swaydb_2.12\n\n[build-badge]: https://github.com/simerplaha/SwayDB/workflows/Build/badge.svg\n\n[build-link]: https://github.com/simerplaha/SwayDB/actions\n\n**Persistent** and **in-memory** key-value storage engine for the JVM aimed at high performance \u0026 resource efficiency.\n\n**Small footprint**: around 7.1 MB jar size. No external core\ndependency ([#307](https://github.com/simerplaha/SwayDB/issues/307)).\n\n**Scalable on a single machine**: Distribute data on multiple local SSDs. Allocate single or multiple `Threads`\nfor reads, caching \u0026 compaction.\n\n**Branches**: This is the `master` branch. See [`develop`](https://github.com/simerplaha/SwayDB/tree/develop) for\nlatest (unstable).\n\n**Status**: Under testing \u0026 performance optimisations. See [project status](#Project-status).\n\n[Documentation](https://swaydb.simer.au)\n\n# Sponsors\n\nThank you [JetBrains](https://www.jetbrains.com/?from=SwayDB)\n\u0026 [JProfiler](https://www.ej-technologies.com/products/jprofiler/overview.html)\nfor full-featured open-source licences to their awesome development tools!\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003ca href=\"https://www.jetbrains.com/?from=SwayDB\" target=\"_blank\"\u003e\u003cimg src=\"/docs/jetbrains_logo.png\" alt=\"Jetbrains support\"/\u003e\u003c/a\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003ca href=\"https://www.ej-technologies.com/products/jprofiler/overview.html\" target=\"_blank\"\u003e\u003cimg src=\"/docs/jprofiler_logo.png\" alt=\"JProfiler support\"/\u003e\u003c/a\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003ca href=\"https://github.com/sponsors/simerplaha\" target=\"_blank\"\u003e[Become a sponsor]\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n## Overview\n\n- Simple data types - `Map`, `Set`, `Queue`, `SetMap` \u0026 `MultiMap` with native Java and Scala collections support.\n- Conditional updates using any pure [JVM function](https://swaydb.simer.au/api/pure-functions/?language=java) - **No query\n  language**.\n- Atomic updates and inserts with `Transaction` API.\n- **Non-blocking core** with configurable APIs for blocking, non-blocking and/or reactive use-cases.\n- Single or multiple disks persistent, in-memory or eventually persistent.\n- [Streams](https://swaydb.simer.au/api/stream/?language=java) - Async \u0026 sync forward and reverse data streaming/iteration.\n- TTL - non-blocking, non-polling asynchronous auto [expiring](https://swaydb.simer.au/api/expire/?language=java) key-values.\n- Range operations to update, remove \u0026 expire a range of key-values.\n- Key only iterations (Lazily fetched values).\n- [Configurable compression](https://swaydb.simer.au/configuration/compressions/?language=scala) with LZ4 \u0026 Snappy\n- Configurable core internals to support custom workloads.\n- Duplicate values elimination\n  with [compressDuplicateValues](https://swaydb.simer.au/configuration/valuesConfig/?language=scala).\n\n## Use cases\n\nHighly configurable to suit **different workloads**. Some known use-cases are:\n\n- General key-value storage\n- Message queues\n- Time-series or Events data\n- Caching\n- Application logs\n- Archiving data or cold storage with high file level compression\n\n## Quick start\n\n- [Java - Quick start](https://swaydb.simer.au/quick-start/?language=java\u0026data-type=map\u0026functions=off)\n- [Scala - Quick start](https://swaydb.simer.au/quick-start/?language=scala\u0026data-type=map\u0026functions=off)\n- [Kotlin - Quick start](https://github.com/simerplaha/SwayDB.kotlin.examples/blob/master/src/main/kotlin/quickstart/QuickStartMapSimple.kt)\n\n## Contributing\n\nContributions are encouraged and welcomed. We are here to help and answer any questions.\n\n**Code of conduct** - Be nice, welcoming, friendly \u0026 supportive of each other. Follow the Apache\nfoundation's [COC](https://www.apache.org/foundation/policies/conduct.html).\n\n- **Contributing to data management API**\n    - Build new data structures extending existing data structures.\n      See [MultiMap](https://github.com/simerplaha/SwayDB/blob/master/swaydb/src/main/scala/swaydb/MultiMap.scala)\n      for example which is an extension\n      of [Map](https://github.com/simerplaha/SwayDB/blob/master/swaydb/src/main/scala/swaydb/Map.scala).\n        - Graph\n        - List\n        - Geospatial\n        - Logs\n        - Observables\n        - Full-text search\n        - etc\n    - Add support for external serialising, streaming \u0026 compression libraries.\n    - Test and improve existing data structures.\n\n- **Contributing to core API**\n    - See issues\n      labelled [good first issue](https://github.com/simerplaha/SwayDB/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22)\n      .\n\n- **Contributing to core internals**\n    - See code marked `TODO`.\n    - Pick any small section to improve. You will find that everything is a function and can be unit-tested\n      independently, so you can easily pick anything to work on.\n\n## Project status\n\nUnder testing \u0026 performance optimisations.\n\nYour feedback and support is very important to get to production. Please get involved\nvia [chat](https://gitter.im/SwayDB-chat/Lobby), [discussion](https://github.com/simerplaha/SwayDB/discussions),\n[issues](https://github.com/simerplaha/SwayDB/issues)\nor by [becoming a sponsor](https://github.com/sponsors/simerplaha).\n\nFuture releases might not be backward compatible until we are production ready.\n\nSee tasks labelled [Production release](https://github.com/simerplaha/SwayDB/labels/Production%20release)\nthat are required before becoming production ready.\n\n## Related GitHub projects\n\n- [SwayDB.java.examples](https://github.com/simerplaha/SwayDB.java.examples) - Java examples demonstrating features and\n  APIs.\n- [SwayDB.kotlin.examples](https://github.com/simerplaha/SwayDB.kotlin.examples) - Kotlin examples demonstrating\n  features and APIs.\n- [SwayDB.scala.examples](https://github.com/simerplaha/SwayDB.scala.examples) - Scala examples demonstrating features\n  and APIs.\n- [SwayDB.benchmark](https://github.com/simerplaha/SwayDB.benchmark) - Performance benchmarks.\n","funding_links":["https://github.com/sponsors/simerplaha"],"categories":["Scala","NoSQL","数据库"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimerplaha%2FSwayDB","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsimerplaha%2FSwayDB","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimerplaha%2FSwayDB/lists"}