Files
iAOP/core/data-bus/__init__.py
T

62 lines
2.1 KiB
Python
Raw Normal View History

# -*- coding: utf-8 -*-
"""iAOP-Core · 数据总线 + 时序库(Data Bus)—— 模板化封装。
对应 PRD 5.2「② 数据总线 + 时序库」与 Issue #4(EPIC):
复用 Kafka + TDengine + PostgreSQL + MinIO,全部改为**按模板配置**
topic / 时序库表 / 关系表 / 对象桶,换行业只改模板资产(YAML + 点位字典),
内核代码零改动;批量写入缓冲 + 幂等去重,保障「数据不丢不重」。
模块:
- templating 模板命名推导(Kafka topic/分区、TDengine 表、PG schema、MinIO 桶);
- kafka_naming Kafka topic 命名/分区模板化组件(配置外置 + 点位维度覆盖 + 生产路由);
- tdengine_schema 时序超级表/子表 DDL + 批量 INSERT SQL 生成;
- postgres_schema 关系库 schema(模板/模型/用户/权限)+ 授权语句;
- minio_lifecycle MinIO 对象桶 + 生命周期策略模板化(mc mb/ilm + S3 兼容策略 JSON);
- batch_writer 批量写入缓冲(StoreSink 抽象 / MemorySink / TdengineSink),
批量聚合 + 幂等去重 + 失败重试(不丢不重)。
测试:`python -m unittest discover -s tests -v`(在 core/data-bus 目录下执行)。
"""
__version__ = "0.2.0"
from .batch_writer import (
DEDUP_KEYS,
BatchWriter,
MemorySink,
StoreSink,
TdengineSink,
)
from .kafka_naming import KafkaTopicNaming
from .minio_lifecycle import MinioLifecycle
from .postgres_schema import generate_grant_ddl, generate_schema_ddl
from .tdengine_schema import (
PointSpec,
build_batch_insert,
generate_schema,
generate_subtable_ddls,
generate_supertable_ddl,
specs_from_point_dict_rows,
)
from .templating import TemplateNaming, sanitize, sanitize_sql
__all__ = [
"TemplateNaming",
"sanitize",
"sanitize_sql",
"KafkaTopicNaming",
"MinioLifecycle",
"PointSpec",
"generate_supertable_ddl",
"generate_subtable_ddls",
"generate_schema",
"specs_from_point_dict_rows",
"build_batch_insert",
"generate_schema_ddl",
"generate_grant_ddl",
"StoreSink",
"MemorySink",
"TdengineSink",
"BatchWriter",
"DEDUP_KEYS",
]