如何基于亚马逊云科技打造高性能的 SQL 向量数据库 MyScale

news2025/2/24 6:19:51

7340e9f910db95335d816728be3fedf9.gif

MyScale 是一款完全托管于亚马逊云科技、支持 SQL 的高效向量数据库。MyScale 的优势在于,它在提供与专用向量数据库相匹敌甚至优于的性能的同时,还支持完整的 SQL 语法。在这篇文章中,我们将阐述 MyScale 是如何借助亚马逊云科技的基础设施,构建出一个稳定且高效的云数据库。

什么是向量数据库

或许你尚未察觉,然而向量嵌入(vector embedding)实际上无处不在。它们构成了众多机器学习和深度学习算法的根基,被广泛运用于从搜索引擎到智能助手等各式各样的应用。机器学习与深度学习通常会把文本、图像、音频、视频等非结构化数据转化为向量嵌入的形式进行储存,并借由向量相似性搜索技术进行语义相关性搜索。基于向量的相似性搜索现如今已被大量应用于各类人工智能驱动的应用场景,包括图像检索、视频分析、自然语言理解、推荐系统、定向广告、个性化搜索、智能客服以及欺诈检测等。在这样的背景下,对向量数据的管理显得尤为重要,我们需要能够快速地储存、索引和搜索这些向量化的数据。

现存的向量数据库大体上可以分为两大类别。一类是专为向量设计的专有向量数据库产品,例如 Pinecone、Weaviate、Qdrant、Chroma、Milvus 等。另一类则是在通用的 SQL 或 NoSQL 数据库产品上进行扩展,其中最为人熟知的 SQL 数据库之一 Postgres 通过插件 pgvector 支持了向量索引和搜索;而包括 ClickHouse、Redis、Elasticsearch 和 Cassandra 在内的许多开源数据库近期都增加了对向量索引的原生支持。

人们通常认为,专有的向量数据库专门为向量检索设计,能够提供较佳的搜索性能。而支持向量搜索的通用数据库产品则依赖于原有的通用数据库,能够提供更为完善的数据管理和结构化数据查询能力,向量检索性能则有所损失。MyScale 基于开源的在线分析处理(OLAP)数据库 ClickHouse 开发,集成了自主研发的多尺度树图(英文:multi-scale tree graph,缩写 MSTG)向量索引算法。它不仅继承了 ClickHouse 卓越的结构化数据分析和查询能力,同时也提供了数倍于专有向量数据库的性价比,从而将两者的优势集于一身,给企业提供了统一的结构化和非结构化数据管理方案。

整体架构

MyScale 是一款完全依托于亚马逊云科技云平台的数据库服务,其架构深度结合了亚马逊云科技的多元化产品线,包含了 Amazon EC2 云端虚拟服务器、Amazon EKS 集群管理、Amazon S3 对象存储、Amazon NLB 负载均衡等。有赖于亚马逊云科技提供的强大底层设施,我们迅速地构建出了 MyScale 的云端服务产品。

如下图所示,MyScale 云服务的架构设计包括全局控制平面(global control plane)、区域控制平面(regional control plane)以及区域数据平面(regional data plane)三个层次,每个层次对应一个 Kubernetes 集群。全局控制平面中部署了云服务的业务系统,负责组织、用户的管理以及整体的使用量统计等。每个区域对应一个云服务供应商的一个可用区,如 Amazon US-EAST-1。每个区域独立部署一个控制平面和多个数据平面。控制平面提供该区域内的集群管理(创建、停止、销毁)API 以及计费系统,数据平面则运行用户启动的 MyScale 数据库集群,它们运行在同一个数据平面中的多个可用区。

d3cfaf40d82eebcfb0b3489bed476865.jpeg

MyScale 的所有服务都部署在亚马逊云科技的托管 Kubernetes 服务 EKS 上。EKS 提供了高度可用、安全及可扩展的 Kubernetes 环境,这使得 MyScale 可以充分利用 Kubernetes 的强大功能,如服务发现、负载均衡、自动扩缩容、安全隔离等。借助 Amazon EKS 上的 Cluster Autoscaler,MyScale 可以根据用户工作负载的需求,快速地启动、停止和扩展实例,对 EKS 的节点池进行扩缩容。

为了保证用户集群之间的隔离,MyScale 利用了 Kubernetes 的命名空间(namespace)特性。在数据平面中,用户创建的每个 MyScale 数据库集群对应 Kubernetes 中的一个命名空间,这样就可以最小化集群之间的相互影响。每个集群对应的命名空间中包含数据库节点、负载均衡服务和元数据存储服务。

用户在使用 MyScale 云服务时,可以通过运行在全局控制平面上的 Web UI 来创建和管理 MyScale 集群。用户在 Web UI 创建 MyScale 集群后,云服务的后端会调用相应区域控制平面中的接口,将 MyScale 数据库集群的具体参数和配置转成一个 Kubernetes 中的 CRD 资源配置文件,保存在该区域的控制平面中。对应的区域数据平面中运行的 Cluster Manager 会监听到区域控制平面中数据库集群 CRD 资源的变化情况,并做出相应的操作,在数据平面中创建或修改实际的 MyScale 数据库集群。在 MyScale 数据库集群启动后,用户可以通过 Web UI、Python/Java/NodeJS 客户端、HTTP 接口以及包括 Langchain 和 LlamaIndex 在内的 LLM 应用框架来访问 MyScale 数据库。

我们选择了配备基于 NVMe 的本地 SSD 盘的 EC2 实例来部署 MyScale 数据库。和大部分选择纯内存 HNSW 向量索引算法的向量数据库不同,MyScale 自研的 MSTG 算法允许将向量数据缓存在本地 NVMe SSD 盘中,因此 MyScale 在为用户提供高性能的向量搜索的同时,大大节约了内存的使用。在我们的公开测试中,MyScale 超过了 Pinecone、Weaviate、Qdrant、Zilliz 等专有向量数据库,提供了最佳的性价比(QPS per dollar)。

在部署 MyScale 云服务时,我们使用 Crossplane 来实现对亚马逊云科技上的 EC2 和 EKS 服务的部署和管理。首先,我们通过 Crossplane 的 Amazon Provider 配置了对应的亚马逊云科技账户信息,使得 Crossplane 能够访问和操作我们的亚马逊云科技资源。然后,我们定义了 EC2 和 EKS 的 YAML 配置文件,通过这些文件,我们可以定义我们需要的服务器和 Kubernetes 集群的参数,如实例类型、集群大小等。通过应用这些配置文件,Crossplane 的 Amazon Provider 会调用 Amazon API 来创建和配置这些资源。

不仅如此,Crossplane 还能够定期同步这些资源的状态,使得我们可以通过 Kubernetes 的接口来监控和管理这些资源。当我们需要修改或删除这些资源时,只需要修改对应的 YAML 文件并重新应用,Crossplane 就会自动完成对应的操作。通过使用 Crossplane,我们能够以一种声明式、统一和自动化的方式来管理我们的云资源,大大提升了我们的工作效率和准确性。

在数据安全方面,MyScale 采用了 Teleport,一种先进的远程访问管理系统。Teleport 能够为开发者和运维人员提供通过密文连接安全地访问我们 Kubernetes 集群的能力。这不仅提升了系统的安全性,也提升了操作的便捷性。更重要的是,Teleport 具有全面的审计功能,能够详细记录所有会话和事件,这对于进行安全分析和满足合规性要求非常有帮助。这就意味着我们可以对任何操作有完全的可视化,从而更好地控制和保护 MyScale 云服务系统,为用户提供安全可靠的服务。

小结

这篇文章介绍了 MyScale,一个在亚马逊云科技上托管的向量数据库。MyScale 基于开源的在线分析处理(OLAP)数据库 ClickHouse 开发,集成了自主研发的多尺度树图(MSTG)向量索引算法,可以提供优秀的数据管理和结构化数据查询能力,同时也提供了性价比突出的向量搜索功能,以及结构化和非结构化联合分析、处理的功能,可以被广泛应用于图像检索、视频分析、自然语言理解等 AI 驱动的场景。

本篇作者

f1f6b6f8d42e61927986a22931d6b94f.jpeg

刘勤

刘勤博士是 MyScale 基础设施团队的负责人。之前,他曾在墨奇科技和华为诺亚方舟实验室工作。2016 年,刘勤在吕自成教授(Prof. John C.S. Lui)的指导下获得了香港中文大学(CUHK)计算机科学博士学位。在博士期间,他专注于图计算和流处理系统的研究。2012 年,他毕业于上海交通大学并获得计算机科学学士学位,并且是 ACM 班的成员。他在国际会议与期刊 KDD、VLDB、ICDE、DSN、CIKM 和 IEEE TKDE 上发表过多篇学术论文,并与同伴一起荣获了 2012 年 KDD Cup 冠军。

a080e62ec765eec9696319f4ccaeb271.jpeg

Kelvin Guo

亚马逊云科技资深解决方案架构师。主要技术方向为 MLOps,DevOps,容器,数据分析。20+年软件开发,项目管理,敏捷思想落地,工程效能咨询和落地经验。

fe605863740b56c6ef1799899b307da9.gif

3ac316da559ecaa30038e23b5cadd101.gif

听说,点完下面4个按钮

就不会碰到bug了!

35e82719035deb47477c8b4df6cfd32f.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/916452.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

攻防世界-simple_js

原题 解题思路 js就看源代码,pass是数字,下面还有一串十六进制的编码。 进制转换就是,也是一串数字,那把这两串数字都拿去转ASCII码。 s1 [55,56,54,79,115,69,114,116,107,49,50] s2 [70,65,85,88,32,80,65,83,83,87,79,82,68…

Linux TCP编程流程

一、TCP编程流程 TCP 提供的是面向连接的、可靠的、字节流服务。TCP的服务器端和客户端编程流程如下: 1.socket()方法 用来创建一个套接字,有了套接字就可以通过网络进行数据的收发。这也是为什么进行网络通信的程序首先要创建一个套接字。创建套接字时…

SqlServer2019—解决SQL Server 无法连接127.0.0.1的问题

1、打开SQL Server 2019配置管理器 2、SQL Servere 网络配置(启用 Named Pipes 和 TCP/IP) 3、修改TCP/IP协议(右键选择属性—IP地址),具体如下图所示: 4、重启SQL Server服务

QT通过ODBC连接GBase 8s数据库(Windows)示例

示例环境: 操作系统:Windows 10 64位数据库及CSDK版本:GBase 8s V8.8_3.0.0_1 64位QT:5.12.0 64位 1,CSDK安装及ODBC配置 1.1,免安装版CSDK 下载免安装版的CSDK驱动,地址:https:…

盛最多水的容器——力扣11

int maxArea(vector<int>& height) {int l=0, r=height.size()

企业如何通过CRM系统获得更多商机?

商机是销售的基础&#xff0c;如何获取更多的商机&#xff0c;是每个企业都关心的问题。通过传统的营销方式来吸引潜在客户&#xff0c;往往成本高、效果低、难以管理。那么有没有一种方式&#xff0c;既节省时间和成本&#xff0c;又可以获取更多商机&#xff1f;当然有&#…

AUTOSAR配置与实践(配置篇) 如何条件控制PDU外发

AUTOSAR配置与实践(配置篇)如何条件控制PDU外发 一、需求1.1 需求简要分析1.2 需求进一步分析二、流程实现和具体配置一、需求 需要针对特定的PDU(外发)进行条件控制,这里要通过不同配置字进行PDU是否外发的控制 1.1 需求简要分析 正常PDU分组时分为两组,接收报文组和…

Javase(中)

一、面向对象进阶 1、static&#xff08;静态是共享的&#xff09; 静态变量 特点&#xff1a;修饰的成员变量被该类的所有对象共享 静态方法 静态方法只能调用静态的东西&#xff0c;非静态方法可以调用所有 static 的注意事项 static的内存图 重识main方法 2、工具类、测…

23.8.11.用apifox端口号与java接口链接的时候少了个/导致连接不成功。

用apifox端口号与java接口链接的时候少了个/导致连接不成功。 原因分析&#xff0c;因为拼接的位置少了个/ 如图所示

电工-三相异步电动机启动电流很大的原因与不利影响

电工-三相异步电动机启动电流很大的原因与不利影响 所谓电动机的启动是指电动机从接入电源开始转动起&#xff0c;到达到额定转速为止的这一过程。 根据理论分析和实际测定&#xff0c;异步电动机启动瞬间&#xff1b;定子绕组启动电流很大&#xff0c;可达额定值的4~7倍。为什…

家庭智慧管控中心——酷开系统全时AI

智能家居入口在哪&#xff1f; 或许你家已经有了&#xff01;举个例子&#xff0c;智能电视就是其中的一种&#xff01;智能家电的变革进度逐渐加深&#xff0c;人们对于智慧生活的需求也逐渐提高。伴随着人工智能、物联网、大数据等信息技术的发展&#xff0c;家电产品的智能化…

Camunda 7.x 系列【23】身份服务 IdentityService

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 2.7.9 本系列Camunda 版本 7.19.0 源码地址:https://gitee.com/pearl-organization/camunda-study-demo 文章目录 1. 概述2. 相关表3. IdentityService1. 概述 在之前我们演示了一个简单的请假流程,接下来…

上篇——税收大数据应用研究

财税是国家治理的基础和重要支柱&#xff0c;税收是国家治理体系的重要组成部分。我们如何利用税收数据深入挖掘包含的数据价值&#xff0c;在进行数据分析&#xff0c;提升税收治理效能&#xff0c;推进税收现代化。 1. 定义与特点 对于“大数据”&#xff08;Big data&#…

使用秘籍|如何实现图数据库 NebulaGraph 的高效建模、快速导入、性能优化

本文整理自 NebulaGraph PD 方扬在「NebulaGraph x KubeBlocks」meetup 上的演讲&#xff0c;主要包括以下内容&#xff1a; NebulaGraph 3.x 发展历程NebulaGraph 最佳实践 建模篇导入篇查询篇 NebulaGraph 3.x 的发展历程 NebulaGraph 自 2019 年 5 月开源发布第一个 alp…

论AI与大数据之间的关系

前言 在21世纪&#xff0c;"AI"和"大数据"已经成为科技领域的热门词汇。它们不仅是创新的代名词&#xff0c;更是现代技术发展的双翼。然而&#xff0c;很多人对于AI与大数据之间的关系仍然停留在表面的理解。本文旨在深入探讨这两者之间的深厚关系&#…

【Python机器学习】实验14 手写体卷积神经网络

文章目录 LeNet-5网络结构&#xff08;1&#xff09;卷积层C1&#xff08;2&#xff09;池化层S1&#xff08;3&#xff09;卷积层C2&#xff08;4&#xff09;池化层S2&#xff08;5&#xff09;卷积层C3&#xff08;6&#xff09;线性层F1&#xff08;7&#xff09;线性层F2 …

C# 反编译dll文件,将dll文件转为cs文件

工具名&#xff1a;reflector&#xff0c;可免费使用 工具下载地址使用方法 工具下载地址 下载地址&#xff1a; https://www.red-gate.com/products/reflector/ 使用方法 下载安装&#xff1b; 打开软件 打开dll文件 侧边栏找打刚打开的dll文件&#xff0c;直接就能导…

操作教程|通过1Panel开源Linux面板快速安装DataEase

DataEase开源数据可视化分析工具&#xff08;dataease.io&#xff09;的在线安装是通过在服务器命令行执行Linux命令来进行的。但是在实际的安装部署过程中&#xff0c;很多数据分析师或者业务人员经常会因为不熟悉Linux操作系统及命令行操作方式&#xff0c;在安装DataEase的过…

论文及代码详解——Restormer

文章目录 论文详解Overall pipelineMulti-Dconv Head Transposed AttentionGated-Dconv Feed-Forward Network 代码详解 论文&#xff1a;《Restormer: Efficient Transformer for High-Resolution Image Restoration》 代码&#xff1a;https://github.com/swz30/Restormer 论…

LRU淘汰策略执行过程

1 介绍 Redis无论是惰性删除还是定期删除&#xff0c;都可能存在删除不尽的情况&#xff0c;无法删除完全&#xff0c;比如每次删除完过期的 key 还是超过 25%&#xff0c;且这些 key 再也不会被客户端访问。 这样的话&#xff0c;定期删除和堕性删除可能都彻底的清理掉。如果…