多模态数据库SurrealDB:简介、实战
概述关系型、nosql、向量数据库、嵌入式、简介官网用Rust写的开源GitHub32.8K Star1.3K Fork多模型数据库把文档、图、关系、时序、地理空间和向量全塞进同一个引擎里对外暴露SurrealQL查询语言语法接近SQL但能同时表达图遍历、向量相似搜索和实时订阅官网文档。功能特性减少开发时间将数据库、查询层、API和认证层整合到一个平台减少对传统后端组件的依赖实时协作API后端服务既是数据库也是API后端服务支持实时协作支持多种查询语言支持从客户端设备进行SQL查询、GraphQL即将推出、ACID事务、WebSocket连接、结构化和非结构化数据、图查询、全文索引和地理空间查询支持WebSocket客户端可订阅数据变化用于实时协同场景细粒度访问控制提供行级权限控制可直接在数据库层定义哪类用户能读写哪些记录精确管理数据访问多模型支持允许开发者使用多种技术存储和建模数据无需预先选择特定方法高级文档间关系通过记录链接和图边连接实现高效的关联查询避免复杂JOIN操作简单模式定义统一数据库和API模式定义简化前端和后端开发直接从客户端连接允许Web浏览器和客户端设备直接连接并查询无需额外API服务层内置权限控制schema支持无模式、严格模式以及混用通过DEFINE TABLE定义支持RELATE关键词建立有向图边图路径查询语法-follows-支持MTREE、HNSW算法创建向量索引K近邻搜索|实时查询和数据变更实时同步数据修改到客户端支持高级过滤和高效的数据格式如DIFFing和PATCHing轻松扩展可作为单节点内存数据库运行也可扩展到分布式集群提供高可用性和可伸缩性通过JS函数扩展支持嵌入式JS函数将计算逻辑移至数据层可嵌入或云端部署完全用Rust构建可作为嵌入式库或分布式数据库服务器使用MCP作为服务器可对接AI Agent工作流SDK覆盖Rust、JavaScript/TypeScript、Python、Go、.NET、PHP、Java等主流语言安装官方提供单一Rust二进制文件可内嵌进应用进程通过Rust Crate或WebAssembly也可在边缘节点以单机模式跑以分布式集群运行在云上。支持多种部署安装方式对于Windows系统来说最简单的可能是从GitHub Release页面下载surreal-v3.2.0.windows-amd64.exe和执行iwr https://windows.surrealdb.com -useb | iex命令的区别在于前者是稳定版本版本号略滞后命令行方式安装永远是最新版并附带日期CommitId信息通过命令行方式安装# Mac、Linuxcurl-sSfhttps://install.surrealdb.com|shbrewinstallsurrealdb/tap/surreal# Windowsiwr https://windows.surrealdb.com-useb|iex# Docker默认基于内存dockerrun--rm--pullalways--namesurrealdb-p8000:8000 surrealdb/surrealdb:latest start# 带认证dockerrun--rm--pullalways--namesurrealdb-p8000:8000 surrealdb/surrealdb:latest start--loginfo--userroot--passroot memory# 持久化到RocksDB存储引擎dockerrun--rm--pullalways-p8000:8000--user$(id-u)-v$(pwd)/mydata:/mydata surrealdb/surrealdb:latest start rocksdb:/mydata/mydatabase.db安装截图命令行使用surreal start surreal start--userdev--passroot memory解读指定存储引擎支持memory内存默认、rocksdb单节点磁盘或tikv多节点集群默认情况下用户名和密码都设置为root。执行surreal start效果图浏览器打开http://localhost:8000自动跳转到https://surrealdb.com/studio先点击【Download for Windows】得到surrealdb-studio-1.0.5.exe。SurrealDB Studio双击文件安装过程略打开应用Google或GitHub登录需勾选用户信息方能使用有点烦啊不填写信息不让用界面大致摸索一下找到【连接】管理新增连接先去看看【实例】管理实际上就是在使用SurrealDB Cloud下滑查看。回到连接支持2种类型Remote包括4种协议类型HTTP、HTTPS、WS、WSSLocal包括Memory此处选择Memory点击下一步即可。连接沙箱和下面的实例菜单几乎差不多可这样理解连接归属于实例一个实例可创建多个连接。看到熟悉的SQL编辑框点击【Combined】查看数据展示样式支持5种视图Combined组合在单个列表中查看所有结果Individual独立逐一检查每个结果Table表格以表格形式渲染查询结果Graph图表以图形化方式可视化查询结果Live实时订阅实时查询结果点击【Table】可看到刚从创建的表Schema也是新增API添加Handler选择HTTP方法GET、PUT、POST、PATCH、DELETE、TRACE方法支持多选。但API定义好后如何使用呢分析器SurrealDB Cloud点击【部署】提供超多种定价计划页面底部可找到更多定价方案。此处当然选择【Free】档位进入详情页部分参数不一致支持选择5个地区支持2个大版本的最新版本号查看实例由于Cloud和Studio版本界面差别不大此处截图Studio。开看到实例概览、Schema、认证、查询、表、函数、参数、API、分析器、指标和日志、设置多个入口菜单。SurrealDB Web打开上面提到的Launch in the browser即打开在线SaaS界面、布局、功能啥的和SurrealDB Studio一模一样。推荐使用本地版Studio数据在本地。JS SDK在数据库中编写自定义JS函数将计算逻辑移至数据层。CREATE film SET ratings[{rating:6,user:user:bt8e39uh1ouhfm8ko8s0},{rating:8,user:user:bsilfhu88j04rgs0ga70},],featuredfunction(){returnthis.ratings.filter(r{returnr.rating7;}).map(r{return{...r,rating:r.rating*10};});};SurrealQL-- 建表CREATEcategorySETnameTechnology,created_attime::now();-- 创建指定ID的记录CREATEperson:johnSETnameJohn Doe,age30,admintrue,signup_attime::now();CREATEarticleSETtitleMy First Article,category(SELECTidFROMcategoryWHEREnameTechnology)[0];-- 查询SELECT*FROMarticle;SELECT*FROMperson:john;SELECTtitle,author.name.fullFROMarticleWHEREauthor.age30FETCHauthor;-- 修改UPDATEperson:johnSETage31;UPDATEuserWHEREstatusactiveMERGE{ last_logintime::now()};UPSERTuser:aliceSETemailaliceexample.comONDUPLICATEKEYUPDATElast_updatedtime::now();-- 删除DELETEperson:johnRETURNBEFORE;SurrealDB支持强类型数据包括布尔值、字符串、数字decimal、int、float、日期时间、持续时间、数组、嵌套对象和GeoJSON地理空间数据。UPDATEpersonSETwaistint34,heightfloat201,scoredecimal0.30.30.30.1;动态计算字段将字段定义为future类型其值仅在查询时计算。CREATEproductSETnameSurrealDB,launch_atdatetime2021-11-01,countdownfuture{ launch_at-time::now()};可定义表的模式schemafull或schemaless并为字段添加类型、断言ASSERT和默认值。-- 创建一个带模式的表DEFINETABLEuserSCHEMAFULL;-- 指定用户表的字段DEFINE FIELD nameONTABLEuserTYPEobject;DEFINE FIELD name.firstONTABLEuserTYPEstring;DEFINE FIELD name.lastONTABLEuserTYPEstring;DEFINE FIELD emailONTABLEuserTYPEstring ASSERT string::is::email($value);-- 在 email 字段上添加唯一索引防止重复值DEFINEINDEXemailONTABLEuserCOLUMNSemailUNIQUE;-- 当用户邮箱地址改变时创建一个新事件DEFINE EVENT emailONTABLEuserWHEN$before.email!$after.emailTHEN(CREATEeventSETuser$value,timetime::now(),value$after.email,actionemail_changed);图关系使用RELATE语句在记录之间创建图边连接。RELATEuser:tobie-write-article:surrealSETtime.writtentime::now();为表定义细粒度的访问权限控制用户对数据的选择、创建、更新和删除操作。DEFINETABLEpost SCHEMALESS PERMISSIONSFORselect-- 已发布的帖子可以被选择WHEREpublishedtrue-- 用户可以查看自己的所有帖子ORuser$auth.idFORcreate,update-- 用户可以创建或更新自己的帖子WHEREuser$auth.idFORdelete-- 用户可以删除自己的帖子WHEREuser$auth.id-- 或者管理员可以删除任何帖子OR$auth.admintrue;向量-- 定义表{ DEFINETABLEdocuments;DEFINE FIELDtextONdocumentsTYPEstring;DEFINE FIELD embeddingONdocumentsTYPEarrayfloat,4;};-- 向量索引DEFINEINDEXOVERWRITE documents_vec_indexONTABLEdocumentsFIELDSembedding HNSW DIMENSION4DIST COSINETYPEF32;{CREATEdocuments CONTENT {text:foo,embedding:[1f,2f,3f,4f]};CREATEdocuments CONTENT {text:bar,embedding:[2f,2f,2f,2f]};CREATEdocuments CONTENT {text:zar,embedding:[5f,4f,3f,2f]};};-- 查询LET $vector[1f,1f,1f,1f];SELECT*,// knn() uses the distance function from the index(1-vector::distance::knn())ASscore// while the following gets computed independently from the index// vector::similarity::cosine(embedding, $vector) AS similarityOMIT embedding// 忽略embedding字段FROMdocumentsWHEREembedding|2,40|$vector;-- 等价函数DEFINEFUNCTIONOVERWRITE fn::search($vector: arrayfloat){RETURNSELECT*,(1-vector::distance::knn())ASscore OMIT embeddingFROMdocumentsWHEREembedding|2,40|$vector;};RETURNfn::search([1f,2f,3f,4f]);CLI官方提供Surrealist官方提供Surrealist可视化管理客户端在图形界面里写SurrealQL、浏览数据、检查执行计划。官网TypeScript编写、开源GitHub1.3K Star116 Fork专为SurrealDB设计的数据可视化管理利器以其直观的操作界面和全面的功能简化数据库管理的复杂度。内置变量定义、查询历史记录管理等强调安全性与灵活性支持多种认证方式和数据库配置确保数据安全的同时赋予用户高度自定义的权限管理能力。特点全功能的Web与Desktop体验通过web app或桌面客户端用户可随时随地访问和管理数据库交互式的查询与结果展示强大的查询视图支持变量、保存查询和历史追踪图形化数据库设计直观的设计师视图简化复杂模式的设计过程全面的安全控制细化的认证与权限管理系统保证数据的安全性便捷的本地服务器启动桌面版允许一键启动SurrealDB本地实例方便调试与开发学习与实验友好内置Sandbox模式提供零成本的学习环境打开GitHub Release页面以Windows系统为例下载Surrealist_3.9.10_x64-setup.exe双击安装失败的话打开PowerShell手动安装实际上就是得到2个.exe文件一个二进制文件一个用于卸载。自带示例数据集这点深得我心点击下载数据集。遇到的问题下载失败点击注册使用Google登录跳转回GUI客户端又失败。点击概览-连接点击内置的沙箱Sandbox功能设置真贴心AI功能主要有2个入口点击第一个按钮有4种方式新增连接和SurrealDB Studio稍微不同客户端工具点击Memory类型时认证方式默认切换到匿名Anonymous。由于个人知识误区切换到【Root】如上图并输入默认用户名密码root遇到问题SQL当然也执行异常实际上切换到【匿名】即可连接到本地内存数据库执行SQL。

相关新闻

Nginx安全配置实战:从基础代理到多层拉黑策略

Nginx安全配置实战:从基础代理到多层拉黑策略

1. 项目概述:从“拉黑”需求看Nginx在前端架构中的核心价值 最近在部署一个基于Nuxt.js的服务端渲染应用时,我遇到了一个挺典型的运维需求:如何在前端服务器层面,高效、精准地拦截恶意请求?这个需求在社区里常被简称为…

2026/10/17 7:16:39 阅读更多 →
金融级AI应用实战:从零构建可复现的信用评分预测服务

金融级AI应用实战:从零构建可复现的信用评分预测服务

在实际金融科技项目中,银行和金融机构对人工智能(AI)的投入早已超越概念验证阶段,进入如何将AI能力安全、合规、高效地融入核心业务流程的深水区。无论是用于风险控制的智能风控模型,还是提升客户体验的智能客服&#…

2026/10/17 14:32:41 阅读更多 →
Java Web调试端口冲突:从JPDA原理到Tomcat/WildFly实战解决

Java Web调试端口冲突:从JPDA原理到Tomcat/WildFly实战解决

1. 项目概述:调试端口冲突的典型困境 “无法打开调试器端口 (java.net.SocketException ‘Interrupted function c’)”,这个报错对于任何使用 Tomcat 或 WildFly(现名 WildFly,曾用名 JBoss AS)进行 Java Web 开发的工…

2026/10/12 4:31:48 阅读更多 →

最新新闻

AIX 6.1 小型机高可用部署:Oracle+HACMP 调优避坑指南

AIX 6.1 小型机高可用部署:Oracle+HACMP 调优避坑指南

简介:本资源是一份面向AIX系统工程师与高可用架构实施人员的IBM P740小型机全周期安装配置实战手册,聚焦金融、电信等关键业务场景下的AIX 7.x系统部署与HACMP集群搭建。手册覆盖从基础操作系统安装、IOCP与fullcore性能调优、limit参数(maxp…

2026/10/17 16:36:41 阅读更多 →
DB2异机恢复实战:NetBackup Agent配置与避坑指南

DB2异机恢复实战:NetBackup Agent配置与避坑指南

简介:这份文档面向DB2数据库管理员与备份运维人员,聚焦使用NetBackup实现DB2数据库的异机恢复场景,适合已具备一定DB2运维基础、需要掌握跨主机恢复流程的技术人员参考。资源包内共1个doc文件,压缩包约314KB,内容围绕D…

2026/10/17 16:36:41 阅读更多 →
自制编程语言:从树遍历解释器到字节码虚拟机的完整实现

自制编程语言:从树遍历解释器到字节码虚拟机的完整实现

简介:编译原理是理解编程语言底层机制的核心知识体系,而词法分析、语法分析是构建语言前端的第一道门槛。在实际工程中,开发者既可以借助yacc/lex生成LALR解析表,也可以手写递归下降解析器,两者在错误处理、优先级控制…

2026/10/17 16:36:41 阅读更多 →
一篇文章带你理解Spring AI和Spring AI Alibaba最火技术:从Agent、RAG到MCP的TaoToken统一接入实践

一篇文章带你理解Spring AI和Spring AI Alibaba最火技术:从Agent、RAG到MCP的TaoToken统一接入实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 16:36:41 阅读更多 →
Linux终端效率实战:快捷键与历史命令的进阶玩法

Linux终端效率实战:快捷键与历史命令的进阶玩法

很多人接触Linux之后,命令背了一堆,但真正用起来总觉得慢半拍。慢在哪?往往不是命令本身不会,而是终端里那些不影响正确性、只影响速度的操作习惯没养起来。尤其是Linux终端快捷键和历史命令这两个东西,很多人以为只是…

2026/10/17 16:36:41 阅读更多 →
PVE8 虚拟机高级参数调优实战:CPU、磁盘、网络与 PCI 直通

PVE8 虚拟机高级参数调优实战:CPU、磁盘、网络与 PCI 直通

简介:这份资源面向在PVE8环境下部署虚拟机的运维人员与开发测试者,聚焦创建虚拟机时的高级参数配置,帮助解决显卡、机型、BIOS、EFI存储、SCSI控制器、磁盘总线与缓存、CPU类别、内存管理及网络配置等选项难以取舍的问题。压缩包共3个文件&am…

2026/10/17 16:35:39 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →