托管在亚马逊云科技的向量数据库MyScale如何借助AWS基础设施构建稳定高效的云数据库

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

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

 MyScale的所有服务都部署在亚马逊云科技的托管Kubernetes服务EKS上。EKS提供了高度可用、安全及可扩展的Kubernetes环境,这使得MyScale可以充分利用Kubernetes的强大功能,如服务发现、负载均衡、自动扩缩容、安全隔离等。借助AWS 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的AWS Provider配置了对应的亚马逊云科技账户信息,使得Crossplane能够访问和操作亚马逊云科技资源。然后,定义EC2和EKS的YAML配置文件,通过这些文件,可以定义需要的服务器和Kubernetes集群的参数,如实例类型、集群大小等。通过应用这些配置文件,Crossplane的AWS Provider会调用AWS API来创建和配置这些资源。

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

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

 小结

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

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【嵌入式开发 Linux 常用命令系列 7.3 -- linux 命令行数值计算】

文章目录 linux 命令行数值计算使用 awk使用 bc 命令使用 Bash 的内置算术扩展使用 expr脚本命令实现 linux 命令行数值计算 在 Linux 命令行中,您可以使用多种方法来执行基本的数学运算。以下是一些示例: 使用 awk awk 是一个强大的文本处理工具&…

pngPackerGUI_V2.0是什么工具?

pngPackerGUI_V2.0是什么工具? png图片打包plist工具,手把手教你使用pngPackerGUI_V2.0此软件是在pngpacker_V1.1软件基础之后,开发的界面化操作软件,方便不太懂命令行的小白快捷上手使用。1.下载并解压缩软件,得到如…

2023/12/30 c++ work

定义一个Person类,私有成员int age,string &name,定义一个Stu类,包含私有成员double *score,写出两个类的构造函数、析构函数、拷贝构造和拷贝赋值函数,完成对Person的运算符重载(算术运算符、条件运算…

git的使用基础教程

最近项目在搞自动化测试,需要将各种测试脚本集成到自动化框架里边,这个就需要用到版本管理系统了,下面简单价绍一下git的使用。 首先从官网下载并安装git工具,下面以wins系统为例子说明 https://git-scm.com/downloads wins安装好后&#xff…

每日一题——LeetCode1002

方法一 个人方法: 将words里的字符串的每个字符出现的次数都转为键值对的形式: 循环求两两键值对数组的交集: 最后的交集就是重复出现的字符和次数,把键值对转回字符数组形式即可 思路对了,但是太复杂了&#xff0c…

[2024区块链开发入门指引] - 比特币与区块链诞生

一份为小白用户准备的免费区块链基础教程 工欲善其事,必先利其器 Web3开发中,各种工具、教程、社区、语言框架.。。。 种类繁多,是否有一个包罗万象的工具专注与Web3开发和相关资讯能毕其功于一役? 参见另一篇博文👉 2024最全面…

打造完备数据生态,「开放互信、合作共赢」: 拓数派亮相2023龙蜥操作系统大会

拓数派始终持「开放互信,合作共赢」的理念,通过积极建立合作伙伴生态网络、构建生态工具、打造活跃的技术和用户社区等方式,构筑更加完善的数据生态体系,为用户带来更加便捷的使用体验。2023年12月17-18日,由开放原子开…

2024年原创深度学习算法项目分享

原创深度学习算法项目分享,包括以下领域: 图像视频、文本分析、知识图谱、推荐系统、问答系统、强化学习、机器学习、多模态、系统界面、爬虫、增量学习等领域… 有需要的话,评论区私聊

【心得】PHP反序列化高级利用(phar|session)个人笔记

目录 ①phar反序列化 ②session反序列化 ①phar反序列化 phar 认为是java的jar包 calc.exe phar能干什么 多个php合并为独立压缩包,不解压就能执行里面的php文件,支持web服务器和命令行 phar协议 phar://xxx.phar $phar->setmetadata($h); m…

堆的应用:堆排序和TOP-K问题

上次才讲完堆的相关问题:二叉树顺序结构与堆的概念及性质(c语言实现堆 那今天就接着来进行堆的主要两方面的应用:堆排序和TOP-K问题 文章目录 1.堆排序1.1概念、思路及代码1.2改良代码(最初建立大堆用AdjustDow) 2. TO…

蓝桥杯一维前缀和 | 算法基础

⭐简单说两句⭐ ✨ 正在努力的小新~ 💖 超级爱分享,分享各种有趣干货! 👩‍💻 提供:模拟面试 | 简历诊断 | 独家简历模板 🌈 感谢关注,关注了你就是我的超级粉丝啦! &…

《MySQL系列-InnoDB引擎01》MySQL体系结构和存储引擎

文章目录 第一章 MySQL体系结构和存储引擎1 数据库和实例2 MySQL配置文件3 MySQL数据库路径4 MySQL体系结构5 MySQL存储引擎5.1 InnoDB存储引擎5.2 MyISAM存储引擎5.3 NDB存储引擎5.4 Memory存储引擎5.5 Archive存储引擎5.6 Federated存储引擎 6 连接MySQL6.1 TCP/IP6.2 命名管…