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)三个层次,每个层次对应一个Kube.NETes集群 。全局控制平面中部署了云服务的业务系统,负责组织、用户的管理以及整体的使用量统计等 。每个区域对应一个云服务供应商的一个可用区,如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/ target=_blank class=infotextkey>Python/JAVA/NodeJS客户端、HTTP接口以及包括LangchAIn和LlamaIndex在内的LLM应用框架来访问MyScale数据库 。
推荐阅读
- 一文教你学会使用Nginx
- 北京大学的前世今生你都了解多少
- 一文了解Redis的持久化
- 一文聊聊如何快速监控 Oracle 数据库
- 想要网站排名快人一步?清楚了解网站的访问速度是关键!
- 关于工伤待遇的这些问题,您都了解吗?
- 一文带你掌握Containerd
- 冷知识!常见首饰的纯度你真的了解吗?
- 一文了解TikTok店铺类型,美国本土店VS跨境店有什么区别?如何入驻?
- 掌握了解网站优化特点,才能网站的权重稳步增加