MyBatis-Plus实现MySQL和Starrocks多数据源整合

项目中有需求要同时使用MySQL和Starrocks,正好整理一下,文末有完整代码包
顺便整理了一个视频

MyBatis-Plus实现MySQL和Starrocks多数据源整合

先了解一下Starrocks

对于Starrocks的一些文档,看官网来的更直接一些

官方文档:https://docs.starrocks.io/zh/docs/introduction/StarRocks_intro/

阿里的文档:https://help.aliyun.com/zh/emr/emr-serverless-starrocks/?spm=a2c4g.11174283.0.0.59d4482desVcFP (有些实际操作能借鉴)

实际使用及链接Starrocks库

实际使用可以当作mysql来使用,能使用https://baomidou.com/ MyBatis-Plus,只要支持mysql的orm框架都可以接入使用。

数据库连接可以直接使用DBeaver https://dbeaver.io/download/

建表语句也是可以参照通用的sql标准,就是表的属性上有所不同,需要注意,(表属性这里需要学习一下),下面是一个建表的示例。
表属性部分

  1. ENGINE = OLAP DUPLICATE KEY (conn_id) COMMENT “OLAP”:
  • 表明该表使用 OLAP 引擎。设置了重复键为conn_id,这意味着conn_id列的值在表中可以重复出现,并且可能用于某些特定的查询和操作。注释为 “OLAP” 用于对表的用途进行说明。
  1. DISTRIBUTED BY HASH (user) BUCKETS 10:
  • 表数据按照user列的值进行哈希分区,将数据分布到 10 个桶(buckets)中。这样可以提高数据的并行处理能力和查询性能。
  1. PROPERTIES (部分:
  • “replication_num” = “2”:指定表的副本数为 2,这意味着数据会在集群中存储两份,以提高数据的可用性和容错性。
  • “in_memory” = “false”:表示表数据不是全部存储在内存中。
  • “storage_format” = “DEFAULT”:使用默认的存储格式。
  • “enable_persistent_index” = “false”:不启用持久化索引。
  • “compression” = “LZ4”:使用 LZ4 压缩算法对数据进行压缩,以减少存储空间占用和提高数据读写性能。

starrocks建表语句

/* 创建表。*/
CREATE TABLE
    `test_emr_query_logs` (
      `conn_id` varchar(10) NULL COMMENT "链接id",
      `database` varchar(100) NULL COMMENT "数据库",
      `start_time` bigint (20) NULL COMMENT "开始时间",
      `end_time` bigint (20) NULL COMMENT "结束时间",
      `event_time` bigint (20) NULL COMMENT "事件事件",
      `is_query` boolean NULL COMMENT "是否查询",
      `latency` int (11) NULL COMMENT "延迟",
      `query_id` varchar(40) NULL COMMENT "查询id",
      `remote_ip` varchar(15) NULL COMMENT "远程ip",
      `state` varchar(20) NULL COMMENT "状态",
      `user` varchar(20) NULL COMMENT "用户"
    ) ENGINE = OLAP DUPLICATE KEY (`conn_id`) COMMENT "OLAP" DISTRIBUTED BY HASH (`user`) BUCKETS 10 PROPERTIES (
      "replication_num" = "2",
      "in_memory" = "false",
      "storage_format" = "DEFAULT",
      "enable_persistent_index" = "false",
      "compression" = "LZ4"
    );
/* 插入数据。*/
insert into
    test_emr_query_logs (
      `conn_id`,
      `database`,
      `start_time`,
      `end_time`,
      `event_time`,
      `is_query`,
      `latency`,
      `query_id`,
      `remote_ip`,
      `state`,
      `user`
    )
values
    (
      '54656',
      'tpc_h_sf1',
      1691635106990,
      1691635107405,
      1691635107405000000,
      1,
      415,
      'fbec0dd7-3726-11ee-a3ef-720338511ec3',
      '10.0.**.**',
      'FINISHED',
      'admin'
    ),
    (
      '54658',
      'tpc_h_sf1',
      1691635107632,
      1691635107860,
      1691635107860000000,
      1,
      228,
      'fc4e0301-3726-11ee-a3ef-720338511ec3',
      '10.0.**.**',
      'FINISHED',
      'admin'
    ),
    (
      '54659',
      'tpc_h_sf1',
      1691635108757,
      1691635108930,
      1691635108930000000,
      1,
      173,
      'fcf9ac5s8-3726-11ee-a3ef-720338511ec3',
      '10.0.**.**',
      'FINISHED',
      'admin'
    ),
    (
      '54661',
      'tpc_h_sf1',
      1691635108994,
      1691635109137,
      1691635109137000000,
      1,
      143,
      'fd1dd62e-3726-11ee-a3ef-720338511ec3',
      '10.0.**.**',
      'FINISHED',
      'admin'
    ),
    (
      '54663',
      'tpc_h_sf1',
      1691635109445,
      1691635109533,
      1691635109533000000,
      1,
      88,
      'fd62a765-3726-11ee-a3ef-720338511ec3',
      '10.0.**.**',
      'FINISHED',
      'admin'
    ),
    (
      '54664',
      'tpc_h_sf1',
      1691635109724,
      1691635109907,
      1691635109907000000,
      1,
      183,
      'fd8d39d9-3726-11ee-a3ef-720338511ec3',
      '10.0.**.**',
      'FINISHED',
      'admin'
    );
/* 查看表信息。*/
select * from test_emr_query_logs;

MySQL建表语句

-- test.`user` definition 创建一个test库

CREATE TABLE `user` (
  `id` bigint DEFAULT NULL COMMENT 'id',
  `name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '名称',
  `age` int DEFAULT NULL COMMENT '年龄',
  `email` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '邮件'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户表';


INSERT INTO `user` (id,name,age,email) VALUES
	 (1,'yuanmomo',18,'u8475845@qq.com'),
	 (2,'eefsfsdf',23,'dfjsdshj@qq.com');

代码中直接使用

对应的实体、mapper

### LlamaIndex 多模态 RAG 实现 LlamaIndex 支持多种数据类型的接入与处理,这使得它成为构建多模态检索增强生成(RAG)系统的理想选择[^1]。为了实现这一目标,LlamaIndex 结合了不同种类的数据连接器、索引机制以及强大的查询引擎。 #### 数据连接器支持多样化输入源 对于多模态数据的支持始于数据收集阶段。LlamaIndex 的数据连接器可以从多个异构资源中提取信息,包括但不限于APIs、PDF文档、SQL数据库等。这意味着无论是文本还是多媒体文件中的内容都可以被纳入到后续的分析流程之中。 #### 统一化的中间表示形式 一旦获取到了原始资料之后,下一步就是创建统一而高效的内部表达方式——即所谓的“中间表示”。这种转换不仅简化了下游任务的操作难度,同时也提高了整个系统的性能表现。尤其当面对复杂场景下的混合型数据集时,良好的设计尤为关键。 #### 查询引擎助力跨媒体理解能力 借助于内置的强大搜索引擎组件,用户可以通过自然语言提问的形式轻松获得所需答案;而对于更复杂的交互需求,则提供了专门定制版聊天机器人服务作为补充选项之一。更重要的是,在这里实现了真正的语义级关联匹配逻辑,从而让计算机具备了一定程度上的‘认知’功能去理解回应人类意图背后所蕴含的意义所在。 #### 应用实例展示 考虑到实际应用场景的需求多样性,下面给出一段Python代码示例来说明如何利用LlamaIndex搭建一个多模态RAG系统: ```python from llama_index import GPTSimpleVectorIndex, SimpleDirectoryReader, LLMPredictor, PromptHelper, ServiceContext from langchain.llms.base import BaseLLM import os def create_multi_modal_rag_system(): documents = SimpleDirectoryReader(input_dir='./data').load_data() llm_predictor = LLMPredictor(llm=BaseLLM()) # 假设已经定义好了具体的大型预训练模型 service_context = ServiceContext.from_defaults( chunk_size_limit=None, prompt_helper=PromptHelper(max_input_size=-1), llm_predictor=llm_predictor ) index = GPTSimpleVectorIndex(documents, service_context=service_context) query_engine = index.as_query_engine(similarity_top_k=2) response = query_engine.query("请描述一下图片里的人物表情特征") print(response) ``` 此段脚本展示了从加载本地目录下各类格式文件开始直到最终完成一次基于相似度排序后的top-k条目返回全过程。值得注意的是,“query”方法接收字符串参数代表使用者想要询问的内容,而在后台则会自动调用相应的解析模块并结合先前准备好的知识库来进行推理计算得出结论。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@程序员小袁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

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

抵扣说明:

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

余额充值