GoWindGoWind
Home
Framework
GoWind Toolkit
  • Open Source

    • GoWind Admin (Admin Platform)
    • GoWind CMS (Content Management)
    • GoWind UBA (Behavior Analytics)
    • GoWind Shop (E-commerce)
    • GoWind Kanban (Kanban Boards)
    • GoWind Ledger (Personal Finance)
    • GoWind ShortPlay (Short Drama)
    • GoWind Ops (Operations Platform)
    • RushWind (Rust Ecosystem)
  • Open Core (Community + Enterprise)

    • GoWind OA (Office Collaboration)
    • GoWind ERP (Procure-to-Pay)
    • GoWind WMS (Warehousing)
  • Commercial

    • GoWind IM (Instant Messaging)
    • GoWind IoT (IoT Platform)
    • GoWind Edu (AI Education)
    • GoWind MES (Manufacturing Execution)
    • GoWind CDC (Data Pipeline)
    • GoWind SDP (Zero-Trust Gateway)
    • GoWind Quant (Quant Research)
    • GoWind Trade Radar (Export Sourcing)
    • GoWind Game Radar (Game Greenlight)
  • 简体中文
  • English
GitHub
Home
Framework
GoWind Toolkit
  • Open Source

    • GoWind Admin (Admin Platform)
    • GoWind CMS (Content Management)
    • GoWind UBA (Behavior Analytics)
    • GoWind Shop (E-commerce)
    • GoWind Kanban (Kanban Boards)
    • GoWind Ledger (Personal Finance)
    • GoWind ShortPlay (Short Drama)
    • GoWind Ops (Operations Platform)
    • RushWind (Rust Ecosystem)
  • Open Core (Community + Enterprise)

    • GoWind OA (Office Collaboration)
    • GoWind ERP (Procure-to-Pay)
    • GoWind WMS (Warehousing)
  • Commercial

    • GoWind IM (Instant Messaging)
    • GoWind IoT (IoT Platform)
    • GoWind Edu (AI Education)
    • GoWind MES (Manufacturing Execution)
    • GoWind CDC (Data Pipeline)
    • GoWind SDP (Zero-Trust Gateway)
    • GoWind Quant (Quant Research)
    • GoWind Trade Radar (Export Sourcing)
    • GoWind Game Radar (Game Greenlight)
  • 简体中文
  • English
GitHub
  • Introduction

    • GoWind Framework
    • Framework Architecture
  • go-wind Core

    • go-wind Core Framework
    • App Lifecycle Management
    • Context Propagation
    • Transport Abstraction
    • Log Facade Interface
  • go-wind-plugins

    • go-wind-plugins Plugin Overview
    • Plugin Configuration System
    • Plugin Registration Mechanism (SPI)
    • Logging Adapter Plugins
    • Transport Protocol Plugins
    • Message Middleware Plugins
    • Encoding Plugins
    • Security and Authentication Plugins
    • Distributed Tracing Plugins
    • Cache Plugins
    • Object Storage Plugins (OSS)
    • Rate Limiting Plugins
    • Metrics Plugins
    • AI Plugins
    • Workflow Plugins
    • Database and Cache Plugins
    • Bootstrap Integration and Gateway Plugins
    • Compression and Serialization Plugins
    • Template Rendering and Validation Plugins
  • go-wind-bootstrap

    • go-wind-bootstrap: The Declarative Bootstrap
    • The Bootstrap Configuration System
    • The Bootstrap SPI Mechanism
    • Declarative Middleware Orchestration
    • Bootstrap Command-Line Integration
    • Bootstrap Practical Examples
  • go-wind-flow Workflow Engine

    • GoWind Flow Process Engine
  • Tutorials

    • Quick Start Tutorial
    • Custom Plugin Development Tutorial
    • Multi-Protocol Listening Tutorial
    • Framework Migration Guide

Database and Cache Plugins

The data-access layer of go-wind-plugins (crud/) centers on generic Repository / Client types (family-internal interfaces, not go-wind framework interfaces) and provides 19 modules: 9 database engines, 4 vector/graph database engines, 1 unified vector contract (vector), and 5 family-shared facilities (api / pagination / cache / audit / viewer).

1. Data-Access Engines (CRUD)

1.1 Supported Databases

DatabaseImport PathDescription
GORMplugins/crud/gormGORM relational ORM (MySQL, PostgreSQL, SQLite, SQL Server, ClickHouse, etc.)
Entplugins/crud/entgoEnt relational ORM (code generation)
MongoDBplugins/crud/mongodbMongoDB document database
ClickHouseplugins/crud/clickhouseClickHouse columnar OLAP
Apache Dorisplugins/crud/dorisApache Doris analytics database (MySQL protocol)
Elasticsearchplugins/crud/elasticsearchElasticsearch full-text search
OpenSearchplugins/crud/opensearchOpenSearch full-text search
InfluxDBplugins/crud/influxdbInfluxDB time-series database
Cassandraplugins/crud/cassandraCassandra wide-column store (under development, not yet available)

1.2 Usage Example (GORM)

import (
    "github.com/tx7do/go-utils/mapper"
    "github.com/tx7do/go-wind-plugins/crud/gorm"
)

// Create a Mapper (DTO <-> Entity)
m := mapper.NewCopierMapper[User, UserEntity]()

// Create a Repository
repo := gorm.NewRepository[User, UserEntity](m,
    gorm.WithDriverName("mysql"),
    gorm.WithDSN("user:pass@tcp(localhost:3306)/mydb?parseTime=true"),
    gorm.WithReplicaDsns([]string{ /* read-replica DSNs */ }),
    gorm.WithEnableTrace(true),
    gorm.WithEnableMigrate(true),
    gorm.WithAutoMigrate(&UserEntity{}),
)

The Repository provides full CRUD, three pagination modes (Offset/Page/Token), structured filtering, multi-field sorting, FieldMask field selection, and optional Redis caching (with stampede prevention).

1.3 Connection and Migration Options

Common Options (GORM as the example): WithGormDB (inject an existing *gorm.DB), WithDriverName, WithDSN, WithReplicaDsns (read/write splitting replicas), WithEnableTrace, WithEnableMetrics (Prometheus metrics), WithEnableDbResolver, WithAutoMigrate, WithMixin(s) (mixins such as field auditing).

2. Vector and Graph Databases

2.1 Engine List

EngineImport PathDescription
Qdrantplugins/crud/qdrantPure vector database (official gRPC client; point = ID + vector + payload)
Milvusplugins/crud/milvusPure vector database (row = primary key + scalar columns + vector column)
Neo4jplugins/crud/neo4jGraph database (table-style usage: node = row, property = column)
Weaviateplugins/crud/weaviateVector database (object = UUID + properties + vector)

2.2 The Unified Vector Contract (vector)

crud/vector defines a cross-engine unified vector search contract (for RAG / semantic search scenarios). It depends on no database driver; each engine module maps the same Query onto its own underlying syntax:

EngineUnderlying Syntax
Elasticsearch 8+/9.xtop-level knn clause + dense_vector
OpenSearch 2.11+query.knn + knn_vector
GORM (PostgreSQL)pgvector <-> / <=> / <#>
MongoDB Atlas 7.0+$vectorSearch aggregation stage
ClickHousecosineDistance / L2Distance / dotProduct
Apache Doris 3.0+cosine_distance / l2_distance / inner_product
import "github.com/tx7do/go-wind-plugins/crud/vector"

q := &vector.Query{
    Field:  "embedding",
    Vector: []float32{0.1, 0.2, 0.3},
    TopK:   10,
    Metric: vector.DistanceMetricCosine,
}

res, _ := repo.SearchByVector(ctx, q) // Hit.Score is always "higher is more similar"

3. Family-Shared Facilities

ModuleImport PathDescription
API contractplugins/crud/apiProtobuf pagination/filter/sort protocol definitions and buf-generated code
Paginationplugins/crud/paginationPaginators (Offset/Page/Token) and filter/sort format conversion
Cacheplugins/crud/cacheCache-Aside caching with SingleFlight stampede prevention
Auditplugins/crud/auditAudit log interface and Context injection
Viewerplugins/crud/viewerIdentity context and five-level data scope (row-level permissions)

4. Service Registration and Discovery

4.1 Adapter List

Service RegistryImport PathHighlights
Consulplugins/registry/consulHashiCorp, health checks
Etcdplugins/registry/etcdKubernetes foundation, Raft consistency
Eurekaplugins/registry/eurekaSpring Cloud integration
Kubernetesplugins/registry/kubernetesK8s Endpoints
Nacosplugins/registry/nacosAlibaba ecosystem, configuration + registry in one
Polarisplugins/registry/polarisTencent Cloud Polaris
ServiceCombplugins/registry/servicecombApache ServiceComb
ZooKeeperplugins/registry/zookeeperClassic, strong consistency

4.2 Service Registration

import consulPlugin "github.com/tx7do/go-wind-plugins/registry/consul"

reg := consulPlugin.New(
    consulPlugin.WithAddr("localhost:8500"),
    consulPlugin.WithServiceName("my-service"),
    consulPlugin.WithServiceAddr("10.0.0.1"),
    consulPlugin.WithServicePort(8080),
    consulPlugin.WithHealthCheck("http://10.0.0.1:8080/health", 10*time.Second),
    consulPlugin.WithTags("v1", "primary"),
)

4.3 Service Discovery

// Get the list of service instances
instances, _ := reg.GetService(ctx, "my-service")
for _, ins := range instances {
    fmt.Printf("%s:%d (weight=%d, healthy=%v)\n",
        ins.Address, ins.Port, ins.Weight, ins.Healthy)
}

// Load balancing
lb := registry.NewRoundRobin(instances)
instance := lb.Select()

4.4 YAML Configuration

registry:
  consul:
    addr: "localhost:8500"
    scheme: http
    health_check:
      interval: 10s
      timeout: 5s
      deregister_after: 60s
    tags: ["v1", "primary"]

5. Configuration Center

5.1 Adapter List

Configuration CenterImport PathHighlights
Fileplugins/config/fileLocal YAML/JSON
Etcdplugins/config/etcdDistributed KV
Consulplugins/config/consulConsul KV
Nacosplugins/config/nacosConfiguration + registry
Apolloplugins/config/apolloOpen-sourced by Ctrip

5.2 Dynamic Configuration

import nacosConfigPlugin "github.com/tx7do/go-wind-plugins/config/nacos"

source := nacosConfigPlugin.New(
    nacosConfigPlugin.WithAddr("localhost:8848"),
    nacosConfigPlugin.WithNamespace("production"),
    nacosConfigPlugin.WithDataID("my-service.yaml"),
    nacosConfigPlugin.WithGroup("DEFAULT_GROUP"),
    nacosConfigPlugin.WithWatch(true),     // watch for config changes
)

5.3 Config Hot Reload

source.Watch(func(event config.Event) {
    fmt.Println("config changed:", event.Key)
    // reload the configuration
    reloadConfig(event.Value)
})

6. Multi-Source Configuration Merging

config:
  sources:
    - type: file
      path: ./config.yaml
    - type: nacos
      addr: localhost:8848
      data_id: my-service.yaml
  # later-loaded sources override earlier ones

Related Documents

  • Plugin Configuration System
  • Cache Plugins
  • Plugin Overview
Edit this page
Last Updated:: 11/3/26, 2:14 PM
Contributors: Bobo
Prev
Workflow Plugins
Next
Bootstrap Integration and Gateway Plugins