{"id":20490166,"url":"https://github.com/devourtech/christmasdb","last_synced_at":"2026-01-04T05:47:23.015Z","repository":{"id":44734216,"uuid":"382785019","full_name":"DevourTech/christmasdb","owner":"DevourTech","description":"A key value store to explore on database and storage internals","archived":false,"fork":false,"pushed_at":"2022-01-27T23:56:57.000Z","size":24,"stargazers_count":1,"open_issues_count":9,"forks_count":3,"subscribers_count":1,"default_branch":"develop","last_synced_at":"2025-01-26T03:08:32.253Z","etag":null,"topics":["data-structures","database","golang","key-value-store"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DevourTech.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-07-04T06:56:44.000Z","updated_at":"2021-12-22T20:08:57.000Z","dependencies_parsed_at":"2022-08-27T09:40:36.787Z","dependency_job_id":null,"html_url":"https://github.com/DevourTech/christmasdb","commit_stats":null,"previous_names":["devourtech/devourkv"],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DevourTech%2Fchristmasdb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DevourTech%2Fchristmasdb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DevourTech%2Fchristmasdb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DevourTech%2Fchristmasdb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DevourTech","download_url":"https://codeload.github.com/DevourTech/christmasdb/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244745751,"owners_count":20503050,"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":["data-structures","database","golang","key-value-store"],"created_at":"2024-11-15T17:15:49.457Z","updated_at":"2026-01-04T05:47:22.989Z","avatar_url":"https://github.com/DevourTech.png","language":"Go","readme":"\n# devourKV\n\nA **Key-Value** store to explore on database and storage internals in **Golang**.\n\n\n## What is a Key:Value store ?\n\nA key–value database, or key–value store, is a **data storage paradigm** designed for `storing`, `retrieving`, and `managing` associative arrays, and a data structure more commonly known today as a **dictionary** or **hash table**. \nDictionaries contain a collection of **objects**, or **records**, which in turn have different fields within them, each containing data. \nThese records are stored and retrieved using a key that uniquely identifies the record, and is used to find the data within the database.\n\n\n## Overview\n\nThis key-value store is a small version of a database. The inspiration for this project has been taken from the book\n**[Introduction to Algorithms](http://staff.ustc.edu.cn/~csli/graduate/algorithms/book6/toc.htm)** popularly\nknow as `CLRS`. The objective is to design a configurable `key-value` store having different implementations for each of the data \nstructure listed below:\n\n1. **B Tree**\n2. **B+ Tree**\n3. **Skip List**\n\nDatabase tuples will be stored in `main memory` as well as `disk` depending upon the implementation of the data structure.\nTuples are being stored in main memory for `quick access` and in the disk to add some sort of `persistance` to the database.\n\nFor the user to consume this, he needs to pass a `config object` based on which the data structure for the store\nwill be chosen.\n\n\n## Features\n\n- **Insert** a `key-value` pair into the store\n- **Retrieve** `value` for a particular `key` from the store\n- **Remove** a `key-value` pair from the store\n\n## API Reference\n\n\n#### Get `value` for a given `key`\n\n```go\n  Get(key interface{}) (interface{}, error)\n```\n\n| Parameter | Type     | Description                |\n| :-------- | :------- | :------------------------- |\n| `key` | `interface{}` | **Required**. Unique key associated with the value |\n\n\u003cbr\u003e\n\n#### Insert a `key-value` pair\n\n```http\n  Store(key interface{}, value interface{}) error\n```\n\n| Parameter | Type     | Description                       |\n| :-------- | :------- | :-------------------------------- |\n| `key`      | `interface{}` | **Required**. Key to be inserted into the store |\n| `value`   |   `interface{}`| **Required**. Value associated with the given key |\n\n\u003cbr\u003e\n\n#### Delete a `key-value` pair\n\n```go\n  Delete(key interface{}) error\n```\n\n| Parameter | Type     | Description                |\n| :-------- | :------- | :------------------------- |\n| `key` | `interface{}` | **Required**. Unique key associated with the value |\n\n## Installing\n\nUsing `devourKV` is easy. First, use **go get** to install the latest version of the library. \n```go\ngo get -u github.com/DevourTech/devourKV\n```\nThis command will install `devourKV`  along with the library and its dependencies.\n\n\n\u003cbr\u003e\n\nNext, include **devourKV** in your application:\n\n```go\nimport \"github.com/DevourTech/devourKV/apis\"\n```\n\n## Important !!\n\nConsider versions released only on the `master` branch as **stable**. The one's released on develop branch are mere snapshots and they do not guarantee stability. \nSnapshots are released using a **GitHub action** called [Snapshotter](https://github.com/DevourTech/snapshotter).\n\n## Contributing\n\nContributions are always welcome!\n\nRefer [CONTRIBUTING.md](./CONTRIBUTING.md) for ways to get started.\n\n\n## Authors\n\n- [@rohan23chhabra](https://github.com/rohan23chhabra)\n- [@archit-1997](https://github.com/archit-1997)\n\n  ","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevourtech%2Fchristmasdb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdevourtech%2Fchristmasdb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevourtech%2Fchristmasdb/lists"}