多模态数据库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/8/17 0:37:09 阅读更多 →
金融级AI应用实战:从零构建可复现的信用评分预测服务

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

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

2026/8/17 2:03:50 阅读更多 →
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/8/17 1:04:01 阅读更多 →

最新新闻

BUCK电路调试:环路补偿、功率级参数与PCB布局的协同设计

BUCK电路调试:环路补偿、功率级参数与PCB布局的协同设计

调试BUCK电路,尤其是新手第一次上手,最怕的不是电路不工作,而是它“半死不活”——输出电压在目标值附近来回跳动,电感啸叫,芯片发烫,示波器上的波形像心电图一样忽上忽下。你对照着数据手册,检…

2026/8/17 3:00:03 阅读更多 →
MySQL索引高级优化实战:覆盖索引、前缀索引与索引下推深度解析

MySQL索引高级优化实战:覆盖索引、前缀索引与索引下推深度解析

1. 从一次慢查询引发的深度思考那天下午,监控系统突然报警,一个核心业务接口的响应时间从平时的几十毫秒飙升到了十几秒。登录服务器一看,CPU和内存都还正常,但数据库的慢查询日志里,一条看似平平无奇的SELECT语句赫然…

2026/8/17 3:00:03 阅读更多 →
智科毕业设计新颖的课题100例

智科毕业设计新颖的课题100例

0 选题推荐 - 云计算篇 毕业设计是大家学习生涯的最重要的里程碑,它不仅是对四年所学知识的综合运用,更是展示个人技术能力和创新思维的重要过程。选择一个合适的毕业设计题目至关重要,它应该既能体现你的专业能力,又能满足实际应…

2026/8/17 3:00:03 阅读更多 →
超厉害!用 Codex 自动研究,GPU Mode qr_v2 内核加速 232 倍

超厉害!用 Codex 自动研究,GPU Mode qr_v2 内核加速 232 倍

简介近期,GPU Mode 与 Core Automation 合作举办自动研究竞赛,问题为实现批量方阵紧凑豪斯霍尔德 QR 分解。183 名参赛者中,作者获第 12 名,实现比基线快 232 倍加速。文章将分享方法、知识及瓶颈。读博客无需了解相关数学知识&am…

2026/8/17 3:00:03 阅读更多 →
SAP学习笔记 - ABAP开发01 - BDC概述,LSMW 实例 - MM02批量修改物料说明

SAP学习笔记 - ABAP开发01 - BDC概述,LSMW 实例 - MM02批量修改物料说明

下面这篇文章也讲了LSMW SAP学习笔记 - FICO03 - FB00,FB01(F-02),FB02,FB03,FS00,OBR1,OBR2,复制总账会计科目-FS15/CG3Y/CG3Z/FS16,OBY2,LSMW-CSDN博客 咱们本章用MM0…

2026/8/17 3:00:03 阅读更多 →
深入解析Python字节码缓存:从pyc文件机制到开发部署实战

深入解析Python字节码缓存:从pyc文件机制到开发部署实战

1. 从一次“诡异”的编译错误说起那天下午,我正忙着调试一个部署在服务器上的Python服务。本地跑得好好的,一上服务器就报了个ImportError,说某个模块找不到。我第一反应是依赖没装全,但pip list一看,该有的都在。更奇…

2026/8/17 2:59:03 阅读更多 →

日新闻

LabVIEW异步调用实战:从原理到生产者消费者模式,解决界面卡顿与并行处理难题

LabVIEW异步调用实战:从原理到生产者消费者模式,解决界面卡顿与并行处理难题

1. 项目概述:为什么异步调用是LabVIEW进阶的必修课? 如果你用LabVIEW做过稍微复杂点的项目,尤其是涉及界面响应、多任务并行或者硬件IO等待的场景,大概率遇到过这样的窘境:前面板点个按钮,整个程序就“卡死…

2026/8/17 0:00:08 阅读更多 →
LabVIEW异步调用实战:解决界面卡顿与并行处理难题

LabVIEW异步调用实战:解决界面卡顿与并行处理难题

1. 项目概述:为什么异步调用是LabVIEW进阶的必经之路如果你在LabVIEW里写过稍微复杂点的程序,尤其是涉及到界面响应、多任务并行或者硬件IO等待,大概率会遇到一个头疼的问题:程序“卡”住了。前面板点不动,进度条不更新…

2026/8/17 0:00:08 阅读更多 →
飞书局域网文件传输实战:3种方案实现高速点对点传输

飞书局域网文件传输实战:3种方案实现高速点对点传输

1. 项目概述:为什么要在局域网内用飞书传文件? 飞书作为一款主流的协同办公套件,其核心功能是围绕云端协作设计的。无论是文档、表格还是文件,通常的分享逻辑都是“上传到云端 -> 生成链接 -> 分享给同事”。这个流程在互联…

2026/8/17 0:00:08 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/17 2:58:27 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/17 2:58:30 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/17 2:58:32 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/16 6:00:23 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/16 6:00:24 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/16 6:00:27 阅读更多 →