You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Phoenix(Elixir)中配置并使用SurrealDB数据库?

在Phoenix框架中集成SurrealDB的配置与实践

1. 添加依赖

目前Elixir生态中常用的SurrealDB客户端是surrealex,先在项目的mix.exs的deps中添加:

defp deps do
  [
    # 其他依赖...
    {:surrealex, "~> 0.5.0"}
  ]
end

执行mix deps.get完成依赖安装。

2. 配置连接参数

在config/config.exs中添加SurrealDB的全局配置,建议按环境区分配置,敏感信息用环境变量注入:

config :surrealex,
  host: System.get_env("SURREALDB_HOST", "localhost"),
  port: String.to_integer(System.get_env("SURREALDB_PORT", "8000")),
  username: System.get_env("SURREALDB_USER", "root"),
  password: System.get_env("SURREALDB_PASS", "root"),
  namespace: System.get_env("SURREALDB_NAMESPACE", "test"),
  database: System.get_env("SURREALDB_DATABASE", "test"),
  pool_size: String.to_integer(System.get_env("SURREALDB_POOL_SIZE", "10")),
  scheme: System.get_env("SURREALDB_SCHEME", "http")

生产环境下务必避免硬编码用户名、密码等敏感信息。

3. 初始化连接

Surrealex默认自带连接池管理,可在项目启动时将其加入监督树,确保连接稳定:
在lib/your_app/application.ex的start/2函数中添加:

def start(_type, _args) do
  children = [
    # 其他子进程...
    Surrealex
  ]

  Supervisor.start_link(children, strategy: :one_for_one)
end

4. 基本CRUD操作示例

创建记录

# 创建user记录
user = %{name: "Alice", email: "alice@example.com"}
{:ok, created_user} = Surrealex.create("user", user)

查询记录

# 查询所有user
{:ok, users} = Surrealex.query("SELECT * FROM user;")

# 根据ID查询单个user
{:ok, user} = Surrealex.get("user", "user:alice123")

更新记录

# 更新指定ID的user邮箱
updated_data = %{email: "alice_new@example.com"}
{:ok, updated_user} = Surrealex.update("user:alice123", updated_data)

删除记录

# 删除指定ID的user
{:ok, _} = Surrealex.delete("user:alice123")

5. 生产环境部署注意事项

  • SurrealDB服务互通:确保Phoenix应用与SurrealDB服务网络可达,推荐用容器化部署(如Docker)并配置持久化存储,防止数据丢失。
  • 连接池调优:根据应用并发量调整pool_size参数,避免连接数过载导致SurrealDB性能下降。
  • 连接健康检查:可添加Phoenix健康检查端点,定期调用Surrealex.query("INFO FOR DB;")验证连接状态。
  • 安全加固:生产环境禁用SurrealDB无认证模式,使用强密码,开启HTTPS(配置scheme: "https")。

内容的提问来源于stack exchange,提问作者ArcticSpaceFox

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 04:25:17