Archery:开源SQL审核平台的全面介绍与部署指南

Archery:开源SQL审核平台的全面介绍与部署指南

【免费下载链接】Archery hhyo/Archery: 这是一个用于辅助MySQL数据库管理和开发的Web工具。适合用于需要管理和开发MySQL数据库的场景。特点:易于使用,具有多种数据库管理功能,包括查询构建、数据库结构管理、数据导入导出等。 【免费下载链接】Archery 项目地址: https://gitcode.com/gh_mirrors/ar/Archery

Archery是一个基于Django开发的开源SQL审核查询平台,专为MySQL等数据库管理和开发设计,提供一站式SQL审核、查询、执行和管理解决方案。该项目起源于对数据库操作规范化和安全性的需求,经过多年发展已成为功能完备的企业级数据库管理平台,支持多种主流数据库类型,包括MySQL、Oracle、PostgreSQL、Redis、MongoDB等。本文将从项目概述、核心功能、技术架构、部署指南等方面进行全面介绍。

Archery项目概述与核心价值

Archery是一个开源的SQL审核查询平台,基于Django框架开发,专为MySQL数据库管理和开发而设计。该项目起源于对数据库操作规范化和安全性的迫切需求,旨在为企业提供一站式的SQL审核、查询、执行和管理解决方案。

项目起源与发展历程

Archery项目最初基于archer进行二次开发,经过多年的迭代演进,已经发展成为一个功能完备、架构成熟的数据库管理平台。项目采用现代化的技术栈,包括Django 4.1、Bootstrap、jQuery等前端框架,以及丰富的数据库连接器支持。

核心功能架构

Archery采用模块化设计,主要功能模块包括:

mermaid

多数据库支持能力

Archery具备强大的多数据库兼容性,支持主流的关系型数据库和NoSQL数据库:

数据库类型查询支持审核支持执行支持备份支持数据字典
MySQL
Oracle
PostgreSQL
Redis
MongoDB
ClickHouse

技术架构优势

Archery的技术架构体现了现代Web应用的最佳实践:

mermaid

核心价值体现

1. 规范化数据库操作流程

Archery通过工作流引擎实现了SQL操作的标准化流程,包括:

  • SQL提交审核审批执行部署结果反馈的完整闭环
  • 多级审核机制,支持自定义审核规则和审批流程
  • 完整的操作日志记录和审计追踪
2. 智能SQL审核与优化

集成多种SQL审核和优化工具,提供专业的SQL质量保障:

# 示例:SQL审核规则检查
def check_sql_quality(sql_content):
    """
    执行SQL质量检查,包括:
    - 语法正确性验证
    - 性能风险评估
    - 规范符合度检查
    - 安全漏洞检测
    """
    # 使用goInception进行深度SQL解析
    audit_result = go_inception.execute_check(sql_content)
    
    # 应用自定义审核规则
    custom_rules = apply_custom_rules(audit_result)
    
    # 生成详细的审核报告
    report = generate_audit_report(audit_result, custom_rules)
    
    return report
3. 全面的数据库管理功能

Archery提供了一系列实用的数据库管理工具:

功能类别具体功能价值描述
实例管理数据库实例配置、连接测试、状态监控统一管理多数据库环境
账号管理用户权限分配、密码重置、权限审计精细化的权限控制
数据操作在线查询、数据导出、表结构同步便捷的数据维护
性能分析慢查询分析、会话管理、锁等待检测深度性能优化
4. 企业级安全与合规

Archery在设计上充分考虑了企业级应用的安全需求:

  • 身份认证:支持多种认证方式(LDAP、OIDC、钉钉等)
  • 权限控制:基于RBAC的精细权限管理
  • 操作审计:完整的操作日志和变更记录
  • 数据加密:敏感信息加密存储和传输
5. 扩展性与集成能力

项目采用插件化架构,支持功能扩展和系统集成:

mermaid

实际应用场景

Archery在以下场景中发挥重要作用:

  1. 金融行业:严格的SQL审核和变更管理,满足合规要求
  2. 电商平台:高频数据库操作的安全保障和性能优化
  3. 企业运维:统一的数据库管理平台,降低运维复杂度
  4. 开发团队:规范的SQL开发流程,提升代码质量

技术生态整合

Archery积极整合业界优秀的数据库工具,形成完整的技术生态:

工具类型集成工具功能描述
SQL审核goInception集审核、执行、备份于一身的MySQL运维工具
SQL优化SQLAdvisor美团开源的SQL索引优化建议工具
SQL优化SOAR小米开源的SQL优化和重写工具
数据迁移gh-ostGitHub开源的在线表结构变更工具
数据归档pt-archiverPercona工具集中的数据归档工具

通过深度整合这些专业工具,Archery为用户提供了企业级的数据库管理能力,同时保持了开源项目的灵活性和可扩展性。

平台支持的数据库类型与功能矩阵

Archery作为一款功能强大的SQL审核平台,其核心优势在于对多种数据库类型的广泛支持。平台通过模块化的引擎架构设计,为每种数据库类型提供了专门的处理逻辑,确保在不同数据库环境下都能提供一致的用户体验和强大的功能支持。

支持的数据库类型

Archery目前支持以下14种主流数据库类型:

数据库类型引擎标识支持版本主要特点
MySQLmysql5.6+完整支持审核、执行、备份等全功能
ClickHouseclickhouse20.3+列式数据库,支持查询和审核
goInceptiongoinception-MySQL审核执行工具集成
MsSQLmssql2008+Microsoft SQL Server支持
Redisredis3.0+键值存储数据库,支持查询和执行
PostgreSQLpgsql9.4+开源关系型数据库支持
Oracleoracle11g+企业级数据库,支持复杂审核
MongoDBmongo3.6+文档数据库,支持查询和账号管理
Phoenixphoenix4.14+HBase SQL层,支持查询
ODPSodps-阿里云大数据计算平台
Cassandracassandra3.0+宽列存储数据库
Dorisdoris0.12+MPP分析型数据库
Elasticsearchelasticsearch6.0+搜索引擎,支持查询和索引管理
OpenSearchopensearch1.0+Elasticsearch分支版本

功能矩阵详细分析

根据平台架构和引擎实现,各数据库类型的功能支持情况如下:

mermaid

核心功能支持矩阵
功能模块MySQLOracleMongoDBClickHouse其他数据库
查询功能✅ 完整支持✅ 完整支持✅ 完整支持✅ 完整支持✅ 全部支持
SQL审核✅ Inception集成✅ 原生审核✅ 语法检查✅ 语法检查⚠️ 部分支持
SQL执行✅ 完整执行✅ DML/DDL✅ 文档操作✅ DML执行✅ 大部分支持
数据备份✅ Binlog备份✅ 数据泵备份❌ 不支持❌ 不支持❌ 少数支持
数据字典✅ 完整导出✅ 对象管理❌ 不支持❌ 不支持⚠️ 部分支持
慢日志分析✅ pt-query-digest❌ 不支持❌ 不支持❌ 不支持❌ 不支持
会话管理✅ 连接监控✅ 会话管理✅ 操作管理❌ 不支持⚠️ 部分支持
账号管理✅ 用户权限❌ 不支持✅ 角色管理❌ 不支持❌ 不支持
参数管理✅ 变量配置❌ 不支持❌ 不支持❌ 不支持❌ 不支持
数据归档✅ gh-ost/pt-osc❌ 不支持❌ 不支持❌ 不支持❌ 不支持

引擎架构设计

Archery采用统一的引擎接口设计,所有数据库引擎都继承自EngineBase基类,实现了标准化的操作方法:

class EngineBase:
    """引擎基类定义统一接口"""
    
    def get_connection(self, db_name=None):
        """获取数据库连接"""
        
    def query(self, db_name=None, sql="", limit_num=0, **kwargs):
        """执行查询操作"""
        
    def execute_check(self, db_name=None, sql=""):
        """执行SQL审核检查"""
        
    def execute_workflow(self, workflow):
        """执行工作流操作"""
MySQL引擎深度支持

MySQL作为Archery的重点支持数据库,提供了最完整的功能生态:

mermaid

Oracle引擎特性

Oracle数据库支持提供了企业级功能:

class OracleEngine(EngineBase):
    """Oracle数据库引擎实现"""
    
    def sqltuningadvisor(self, db_name=None, sql="", **kwargs):
        """SQL调优顾问功能"""
        
    def tablespace(self, offset=0, row_count=14):
        """表空间管理"""
        
    def lock_info(self):
        """锁信息查询"""
MongoDB引擎特性

文档数据库的特殊支持:

class MongoEngine(EngineBase):
    """MongoDB数据库引擎"""
    
    def get_all_databases_summary(self):
        """获取数据库汇总信息"""
        
    def get_instance_users_summary(self):
        """获取实例用户信息"""
        
    def create_instance_user(self, **kwargs):
        """创建实例用户"""

功能启用配置

settings.py中通过配置控制哪些数据库引擎可用:

# 可用引擎映射配置
AVAILABLE_ENGINES = {
    "mysql": {"path": "sql.engines.mysql:MysqlEngine"},
    "oracle": {"path": "sql.engines.oracle:OracleEngine"},
    "mongo": {"path": "sql.engines.mongo:MongoEngine"},
    # ... 其他引擎配置
}

# 实际启用的引擎列表
ENABLED_ENGINES = [
    "mysql", "clickhouse", "mssql", "redis", "pgsql", 
    "oracle", "mongo", "phoenix", "odps", "cassandra", 
    "doris", "elasticsearch", "opensearch"
]

性能与扩展性考虑

Archery的引擎架构设计考虑了以下性能优化因素:

  1. 连接池管理:每个引擎实现连接复用机制
  2. 异步处理:耗时操作通过Django-Q任务队列处理
  3. 缓存策略:频繁访问的元数据信息进行缓存
  4. 批量操作:支持批量SQL执行和审核

自定义引擎扩展

平台支持自定义引擎扩展,开发者可以通过实现EngineBase接口来支持新的数据库类型:

class CustomDBEngine(EngineBase):
    """自定义数据库引擎实现"""
    
    name = "CustomDB"
    info = "自定义数据库引擎"
    
    def get_connection(self, db_name=None):
        # 实现连接逻辑
        pass
        
    def query(self, db_name=None, sql="", limit_num=0, **kwargs):
        # 实现查询逻辑
        pass

这种设计使得Archery能够灵活适应各种数据库环境,为企业级数据库管理提供全面的解决方案。

Docker快速部署与环境配置

Archery作为一款功能强大的SQL审核平台,提供了完整的Docker部署方案,让用户能够快速搭建生产环境。通过Docker Compose编排,可以一键部署包含MySQL数据库、Redis缓存、GoInception审核引擎和Archery应用在内的完整服务栈。

Docker Compose部署架构

Archery的Docker部署采用多容器架构,各个服务组件协同工作:

mermaid

核心配置文件详解

Docker Compose配置

Archery的Docker Compose配置文件定义了四个核心服务:

version: '3'

services:
  redis:
    image: redis:5
    container_name: redis
    restart: always
    command: redis-server --requirepass 123456
    expose:
      - "6379"

  mysql:
    image: mysql:5.7
    container_name: mysql
    restart: always
    ports:
      - "3306:3306"
    environment:
      MYSQL_DATABASE: archery
      MYSQL_ROOT_PASSWORD: 123456

  goinception:
    image: hanchuanchuan/goinception
    container_name: goinception
    restart: always
    ports:
      - "4000:4000"

  archery:
    image: hhyo/archery:v1.12.0
    container_name: archery
    restart: always
    ports:
      - "9123:9123"
    volumes:
      - "./archery/settings.py:/opt/archery/local_settings.py"
      - "./archery/soar.yaml:/etc/soar.yaml"
    entrypoint: "bash /opt/archery/src/docker/startup.sh"
环境变量配置表
环境变量默认值说明
MYSQL_DATABASEarcheryArchery使用的数据库名称
MYSQL_ROOT_PASSWORD123456MySQL root用户密码
REDIS_PASSWORD123456Redis认证密码
NGINX_PORT9123Nginx服务监听端口

部署步骤详解

1. 环境准备

确保系统已安装Docker和Docker Compose:

# 检查Docker版本
docker --version

# 检查Docker Compose版本
docker-compose --version
2. 下载部署文件

从项目仓库获取Docker部署配置文件:

git clone https://gitcode.com/gh_mirrors/ar/Archery.git
cd Archery/src/docker-compose
3. 自定义配置

编辑本地配置文件archery/settings.py来覆盖默认设置:

# 数据库连接配置
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'archery',
       

【免费下载链接】Archery hhyo/Archery: 这是一个用于辅助MySQL数据库管理和开发的Web工具。适合用于需要管理和开发MySQL数据库的场景。特点:易于使用,具有多种数据库管理功能,包括查询构建、数据库结构管理、数据导入导出等。 【免费下载链接】Archery 项目地址: https://gitcode.com/gh_mirrors/ar/Archery

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值