An observability database aims to ingest, analyze and store Metrics, Tracing and Logging data.

Clone this repo:
  1. de3bd0c chore(repo): disable Dependabot, protect v0.11.x, and clean up merged branches in the PR skill (#1401) by 吴晟 Wu Sheng · 10 hours ago main
  2. 7e1418a feat(stream): migrate the element index with the native index engine (NIDX-04) (#1399) by Gao Hongtao · 34 hours ago
  3. 8c17236 feat(index): cut the series index over to the native index and remove the legacy engine (NIDX-03) (#1397) by Gao Hongtao · 36 hours ago
  4. df5f88a fix(test): wait out an in-flight persist before collecting garbage (#1398) by Gao Hongtao · 2 days ago
  5. 735e9ad feat(index): complete the Property native cutover and serve Q1-Q3 from the native index (#1390) by Gao Hongtao · 2 days ago

BanyanDB

Continuous Integration Go Report Card GitHub release GitHub release date GoDoc

BanyanDB, as an observability database, aims to ingest, analyze and store Metrics, Tracing and Logging data. It's designed to handle observability data generated by observability platform and APM system, like Apache SkyWalking etc.

Introduction

BanyanDB, as an observability database, aims to ingest, analyze and store Metrics, Tracing, and Logging data. It's designed to handle observability data generated by Apache SkyWalking. Before BanyanDB emerges, the Databases that SkyWalking adopted are not ideal for the APM data model, especially for saving tracing and logging data. Consequently, There’s room to improve the performance and resource usage based on the nature of SkyWalking data patterns.

The database research community usually uses RUM Conjecture to describe how a database access data. BanyanDB combines several access methods to build a comprehensive APM database to balance read cost, update cost, and memory overhead.

Contact us

Documentation

Developer tooling

The dump trace-source-catalog subcommand validates the frozen downloaded trace benchmark shard and writes its deterministic core and secondary-index ledgers. It requires --source-path and a new, outside-source --output-path; see the trace pipeline merge performance design for the source contract.

The dump trace-generate-fixture subcommand consumes that catalog and the immutable downloaded shard, verifies the default SkyWalking sampler ratio, and writes the deterministic one-day core and secondary-index fixture through the data-node part receipt path. It requires --source-path, --catalog-path, a new --output-path, and the built sampler --plugin-path.

The trace benchmark receiver can enable per-merge JSONL recording for the primary, boundary-drain, and cooldown phases. Records classify actual sampler execution, preserve merge depth and input lineage, nest secondary-index work under its core merge, and expose reconciled low-cardinality aggregates plus serial-attribution resource deltas.

Contributing

For developers who want to contribute to this project, see the Contribution Guide.

Artifacts that are committed to this repository — currently the generated license files — are built in a pinned, digest-verified container so that they are byte-identical regardless of the host operating system. It works on Linux, macOS and Windows (Docker Desktop); WSL2 is the smoother option on Windows but is not required for this target:

make docker-license-dep    # canonical: regenerate the license files
make check-license-outputs # verify the committed bytes without regenerating

The container is streamed the source tree and returns only the generated files; your node_modules and bin/ are never touched. The native make license-dep still works and produces the same bytes. See CONTRIBUTING.md and the design.

License

Apache 2.0 License.