如何在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
相关产品推荐
相关产品推荐

