surrealdb/surrealdb
GitHub: surrealdb/surrealdb
一个用 Rust 编写的多模型数据库,整合文档、图、关系、向量检索等多种数据模型,支持实时推送、嵌入式部署和分布式集群。
Stars: 31431 | Forks: 1162
What is SurrealDB?
SurrealDB 是一个用 Rust 构建的多模型数据库,旨在将多种数据模型统一到一个引擎中。SurrealDB 结合了文档、图、关系、时间序列、地理空间和键值数据类型,以及强大的搜索和检索功能(全文、向量、混合)以及实时和事件驱动能力,使开发者能够更快、更高效地构建强大的应用程序。鉴于其支持最终用户身份验证,SurrealDB 也可以用作 Backend-as-a-Service。由于它是单个 Rust 二进制文件,SurrealDB 可以嵌入运行(应用内)、在浏览器中运行(通过 WebAssembly)、在边缘端运行、作为单个后端节点自托管,或者在云中的分布式集群中运行。
SurrealDB 用于数据密集型系统,例如需要多种数据类型的应用程序、AI 智能体的数据层、知识图谱、实时应用程序(例如推荐引擎、欺诈检测系统)以及嵌入式/边缘系统。使用 SurrealDB,您可以简化数据库和 API 基础设施,减少开发时间,并快速且经济高效地构建安全、高性能的应用程序。
**SurrealDB 的主要功能包括:**
- **减少开发时间**:SurrealDB 通过消除对大多数服务器端组件的需求来简化您的数据库和 API 技术栈,使您能够更快、更低成本地构建安全、高性能的应用程序。
- **多模型**:原生支持文档、图、关系(强制模式和 Schemaless)、时间序列、地理空间和检索(全文、向量、混合)。这是通过 SurrealQL(SurrealDB 的类 SQL 直观查询语言)原生提供的。
- **实时协作 API 后端服务:** SurrealDB 既可以用作数据库,也可以用作 API 后端服务,从而实现实时协作。
- **支持多种查询语言**:SurrealDB 支持从客户端设备进行 SQL 查询、GraphQL、ACID 事务、WebSocket 连接、结构化和非结构化数据、图查询、全文和向量索引以及地理空间查询。
- **细粒度访问控制**:SurrealDB 提供基于行级权限的访问控制,使您能够精确管理数据访问。
查看[功能](https://surrealdb.com/features)、最新[版本](https://surrealdb.com/releases)和[文档](https://surrealdb.com/docs)。
Contents
- [功能](#features)
- [文档](#documentation)
- [入门指南](#getting-started)
- [服务端代码](#server-side-code)
- [客户端应用](#client-side-apps)
- [SurrealDB Cloud](#surrealdb-cloud)
- [安装](#installation)
- [在 macOS 上安装](#install-on-macos)
- [在 Linux 上安装](#install-on-linux)
- [在 Windows 上安装](#install-on-windows)
- [使用 Docker 运行](#run-using-docker)
- [快速浏览](#quick-look)
- [为什么选择 SurrealDB](#why-surrealdb)
- [数据库、API 和权限](#database-api-and-permissions)
- [表、文档和图](#tables-documents-and-graph)
- [高级文档间关系](#advanced-inter-document-relations-and-analysis-no-joins-no-pain)
- [简单的 Schema 定义](#simple-schema-definition-for-frontend-and-backend-development)
- [直接从 Web 浏览器连接](#connect-and-query-directly-from-web-browsers-and-client-devices)
- [多种不同的查询方法](#query-the-database-with-the-tools-you-want)
- [实时 Live 查询和数据变更](#realtime-live-queries-and-data-changes-direct-to-application)
- [轻松扩展以实现高可用性](#scale-effortlessly-to-hundreds-of-nodes-for-high-availability-and-scalability)
- [使用 JavaScript 扩展您的数据库](#extend-your-database-with-javascript-functions)
- [设计为嵌入式或云端运行](#designed-to-be-embedded-or-to-run-distributed-in-the-cloud)
- [社区](#community)
- [贡献](#contributing)
- [安全](#security)
- [许可证](#license)
Features
- [x] 数据库服务器或嵌入式库
- [x] 多行、多表 ACID 事务
- [x] 单节点或高度可扩展的分布式模式
- [x] 记录链接和有向类型图连接
- [x] 存储结构化和非结构化数据
- [x] 增量计算视图,用于预计算的高级分析
- [x] 内置实时 API 层和安全权限
- [x] 使用表、文档和图以任何方式存储和建模数据
- [x] 面向前端和后端开发的简单 Schema 定义
- [x] 直接从 Web 浏览器和客户端设备连接和查询
- [x] 使用嵌入式 JavaScript 函数实现自定义高级功能
Documentation
有关安装、开发、部署和管理的指导,请查看以下资源:
- 文档:https://surrealdb.com/docs
- SurrealDB University:https://surrealdb.com/learn
- Aeon's Surreal Renaissance(交互式书籍):https://surrealdb.com/learn/book
Getting started
开始使用 SurrealDB 就像启动 SurrealDB 数据库服务器、选择您的平台并将其 SDK 集成到您的代码中一样简单。您可以通过阅读我们的教程之一,轻松开始使用您选择的平台。
**服务端代码**
**客户端应用**
SurrealDB Cloud
SurrealDB 提供托管的[云服务](https://app.surrealdb.com/overview)。无需担心基础设施运维、监控、备份或容量规划。[SurrealDB Cloud](https://surrealdb.com/cloud) 让您只需点击几下,即可利用 SurrealDB 的强大功能和灵活性,专注于构建出色的产品。从原型扩展到企业级规模。SurrealDB Cloud 的可扩展架构允许您的数据库随着应用程序的增长而演进,确保您始终领先于需求。但是,如果您想自己部署 SurrealDB,请继续阅读下文。
Installation
SurrealDB 旨在简单安装和运行 - 只需在终端中使用一条命令。除了传统安装方式外,SurrealDB 还可以通过 HomeBrew、Docker 或使用任何其他容器编排工具(如 Docker Compose、Docker Swarm、Rancher 或 Kubernetes)进行安装和运行。
Install on macOS
在 macOS 上开始使用 SurrealDB 的最快方法是使用 Homebrew。这将安装命令行工具和 SurrealDB 服务器作为单个可执行文件。如果您不使用 Homebrew,请按照下面的 Linux 说明安装 SurrealDB。
```
brew install surrealdb/tap/surreal
```
如果您想测试每晚发布的具有最新功能的版本,请安装 `nightly` 版本:
```
brew install surrealdb/tap/surreal-nightly
```
Install on Linux
在 Unix 操作系统上开始使用 SurrealDB 的最简单且首选的方法是安装并使用 SurrealDB 命令行工具。在终端中运行以下命令并按照屏幕上的说明操作。
```
curl --proto '=https' --tlsv1.2 -sSf https://install.surrealdb.com | sh
```
如果您想在下一个版本发布之前运行 beta 版本,请使用 `beta` 版本:
```
curl --proto '=https' --tlsv1.2 -sSf https://install.surrealdb.com | sh -s -- --beta
```
如果您想测试每晚发布的具有最新功能的版本,请安装 `nightly` 版本:
```
curl --proto '=https' --tlsv1.2 -sSf https://install.surrealdb.com | sh -s -- --nightly
```
Install on Windows
在 Windows 上开始使用 SurrealDB 的最简单且首选的方法是安装并使用 SurrealDB 命令行工具。在终端中运行以下命令并按照屏幕上的说明操作。
```
iwr https://windows.surrealdb.com -useb | iex
```
如果您想测试每晚发布的具有最新功能的版本,请安装 `nightly` 版本:
```
iex "& { $(irm https://windows.surrealdb.com) } -Nightly"
```
Run using Docker
Docker 可用于管理和运行 SurrealDB 数据库实例,而无需安装任何命令行工具。SurrealDB docker 容器包含完整的命令行工具,用于从运行中的服务器导入和导出数据,或用于运行服务器本身。
```
docker run --rm --pull always --name surrealdb -p 8000:8000 surrealdb/surrealdb:latest start
```
对于刚刚开始在内存中运行开发服务器的情况,您可以向容器传递一个基本初始化配置,将用户和密码设置为 root 并启用日志记录。
```
docker run --rm --pull always --name surrealdb -p 8000:8000 surrealdb/surrealdb:latest start --log info --user root --pass root memory
```
Quick look
借助强类型数据类型,数据可以直接在数据库中完全建模。
```
UPDATE person SET
waist =
Why SurrealDB?
Security
有关安全问题,请查看我们的[漏洞政策](https://github.com/surrealdb/surrealdb/security/policy),查看我们的[信任与安全页面](https://surrealdb.com/legal/category/security),并通过 [security@surrealdb.com](mailto:security@surrealdb.com) 温馨邮件通知我们,而不是在 GitHub 上发布公开 issue。
License
SurrealDB 的源代码根据多个不同的许可证进行许可。每个许可证的副本可以在[每个仓库](https://github.com/surrealdb)中找到。
- 库和 SDK,各自位于其独立的仓库中,根据Apache License 2.0](https://github.com/surrealdb/license/blob/main/APL.txt) 或 [MIT License](https://github.com/surrealdb/license/blob/main/MIT.txt) 发布。
- 某些核心数据库组件,各自位于其独立的仓库中,根据 [Apache License 2.0](https://github.com/surrealdb/license/blob/main/APL.txt) 发布。
- SurrealDB 的核心数据库代码,位于[本仓库](https://github.com/surrealdb/surrealdb)中,根据 [Business Source License 1.1](/LICENSE) 发布。
有关更多信息,请参阅[许可信息](https://github.com/surrealdb/license)。标签:ACID, AI工具, Docker, GraphQL, JS文件枚举, NewSQL, RESTful, Rust, SQL, SurrealDB, Syscall, Web开发, 代理服务器, 分布式数据库, 协作, 可视化界面, 后端开发, 多人体追踪, 多模型数据库, 大数据, 安全防御评估, 实时数据库, 嵌入式数据库, 开源, 数据可视化, 数据库, 文档数据库, 日志审计, 目录扫描, 系统审计, 网络流量审计, 请求拦截, 逆向工具, 通知系统