{"id":13740328,"url":"https://gitlab.com/ProfaneDB/ProfaneDB","last_synced_at":"2025-05-08T20:30:55.747Z","repository":{"id":64344809,"uuid":"3208880","full_name":"ProfaneDB/ProfaneDB","owner":"ProfaneDB","description":"A Protocol Buffers database","archived":false,"fork":false,"pushed_at":null,"size":null,"stargazers_count":33,"open_issues_count":13,"forks_count":1,"subscribers_count":null,"default_branch":"master","last_synced_at":"2024-11-15T10:41:48.220Z","etag":null,"topics":["cpp","database","grpc","protobuf","rocksdb"],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://gitlab.com/ProfaneDB/ProfaneDB/-/avatar","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":"2017-04-29T07:50:02.118Z","updated_at":"2021-08-10T13:32:11.702Z","dependencies_parsed_at":"2022-12-06T22:06:07.096Z","dependency_job_id":null,"html_url":"https://gitlab.com/ProfaneDB/ProfaneDB","commit_stats":null,"previous_names":[],"tags_count":0,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/repositories/ProfaneDB%2FProfaneDB","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/repositories/ProfaneDB%2FProfaneDB/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/repositories/ProfaneDB%2FProfaneDB/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/repositories/ProfaneDB%2FProfaneDB/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/owners/ProfaneDB","download_url":"https://gitlab.com/ProfaneDB/ProfaneDB/-/archive/master/ProfaneDB-master.zip","host":{"name":"gitlab.com","url":"https://gitlab.com","kind":"gitlab","repositories_count":4518947,"owners_count":6979,"icon_url":"https://github.com/gitlab.png","version":null,"created_at":"2022-05-30T11:31:42.605Z","updated_at":"2024-07-18T11:24:13.055Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/owners"}},"keywords":["cpp","database","grpc","protobuf","rocksdb"],"created_at":"2024-08-03T04:00:46.391Z","updated_at":"2025-05-08T20:30:54.622Z","avatar_url":"https://gitlab.com/ProfaneDB/ProfaneDB/-/avatar","language":null,"readme":"# ProfaneDB\n\nProfaneDB is a database for Protocol Buffer objects.  \nThe key used for retrieval of objects is defined within `.proto` files, this is then used to store a single copy of each object, and allow references between objects without data duplication.\n\n\n## Configuration and usage\n\nFor a more detailed explanation, go to the [project's website](http://profanedb.gitlab.io/docs/quick-start/).\n\n### Schema definition\n\nSchema definition comes with every message definition, using [Protocol Buffer field options](https://developers.google.com/protocol-buffers/docs/proto#options):\n\n*At the moment only one key per message can be set*\n\n```protobuf\nimport \"profanedb/protobuf/options.proto\";\n\nmessage Test {\n    int32 field_one_int = 1 [ (profanedb.protobuf.options).key = true ];\n    string field_two_str = 2;\n    bool field_three_bool = 3;\n    bytes field_four_bytes = 4;\n    \n    Nested field_five_nested = 5;\n}\n\nmessage Nested {\n    string nested_field_one_str = 1 [ (profanedb.protobuf.options).key = true ];\n    int64 nested_field_two_int = 2;\n    double nested_field_three_double = 3;\n}\n```\n\nProfaneDB can either be used as a gRPC server (service definition in profanedb/protobuf/db.proto) or as a library (interface in profanedb/db.hpp).\n\n### CLI parameters\n\n```\nprofanedb_server --rocksdb_path /tmp/profanedb -I /usr/include -S /your/schema/dir\n```\n\nThe most important parameters are the include path (`-I`) and schema path (`-S`).\n\n- The **include path** is used to retrieve `google/protobuf/*.proto`,\n  `profanedb/protobuf/*.proto` and any other dependencies.\n- The **schema path** has your definitions with the *key* option set.\n\n\n## Build\n\nProfaneDB uses [CMake](https://cmake.org/), and depends on Protobuf, gRPC, RocksDB, Boost.\n\n### Options\n\n| CMake Option | Default | Description |\n|--------------|:-------:|-------------|\n| `BUILD_SHARED_LIBS` | `ON` | Build libprofanedb.so, to embed __ProfaneDB__ |\n| `BUILD_PROFANEDB_SERVER` | `OFF` | Build __ProfaneDB__ gRPC server |\n| `BUILD_TESTS` | `OFF` | Build tests, run with `ctest` |\n","funding_links":[],"categories":["Tools"],"sub_categories":["Other"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/gitlab.com%2FProfaneDB%2FProfaneDB","html_url":"https://awesome.ecosyste.ms/projects/gitlab.com%2FProfaneDB%2FProfaneDB","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/gitlab.com%2FProfaneDB%2FProfaneDB/lists"}