/dbpack

A db proxy for distributed transaction, read write splitting and sharding! Support any language! It can be deployed as a sidecar in a pod.

Primary LanguageGoApache License 2.0Apache-2.0

DBPack

LICENSE GitHub Workflow Status Go Report Card codecov GitHub Release Docker Pulls

dbpack.svg

DBPack is a database proxy pack aims to provide a distributed transaction solution of high performance and has no invasion into business logic. It can be deployed as a sidecar in a pod, which can shield complex basic logic, so that business development does not need to rely on a specific SDK, simplifying the development process and improving development efficiency. It supports any programming language and is easy to use.

Feature

  • support MYSQL protocol.
  • event driven distributed transaction solution inspired by kubernetes.
  • support read write splitting and custom SQL routing via Hint.
  • support audit log and SQL tracing.
  • sharding: support query on sharded table, support order by and limit.
  • sharding: support insert, delete, update on sharded tables.
  • can be deployed as a sidecar,support any programming language.
  • more features on the road.

Metrics

using prometheus metrics, default metric server runs at :18888

Getting Started

Requirements

  • Go >= 1.17
  • MYSQL >= 5.7+

Contribution Guide

Architecture

architecture

  • Listener: responsible for parsing the SQL protocol.
  • Executor: responsible for forwarding SQL requests to the backend physical DB.
  • Filter: responsible for metrics statistics, SQL interception, encryption and decryption of sensitive information, etc.
  • ConnectionFilter: process the intercepted SQL on the connection.

Stargazers

Stargazers repo roster for cectc/dbpack

License

DBPack is licensed under the Apache License, Version 2.0.