我正在建立一个集中存储库来存储企业架构师(来自sparx系统)生成的工件,供6-8人团队使用.最初想到托管一个PostgreSQL数据库来集中存储工件,另一个选择是使用SVN.查看EA文档,没有清楚地了解所考虑的选项的优缺点.与使用SVN相比,使用DBMS时会产生以下开销.
对于SVN,从EA文档中可以看出,部署模型仅适用于最大规模为10的团队,并且文件可能会被破坏.除了这些是使用SVN托管存储库的任何瓶颈?听取在多用户环境中与Enterprise架构师合作过的人的建议会很棒.
我今天遇到了一个相当有趣的问题。我正在尝试使用 Ecto 函数实现从 CSV 文件到我的数据库的批量插入,Repo.insert_all/2但是,有一件事困扰着我。
问题是我的上下文中的以下代码:
defmodule AppName.Roles do
def bulk_insert(array_of_maps) do
try do
Repo.insert_all(Role, array_of_maps)
rescue
exception in Postgrex.Error ->
_handle_exception(exception) # or whatever
end
end
end
Run Code Online (Sandbox Code Playgroud)
不过就目前而言,这似乎是一个hack。因为我知道有一个内置的变更集机制可以处理独特的约束,但我不知道如何将系统的那部分包含在Repo.insert_all/3
但是由于该insert_all函数不关心变更集,所以这更加困难。
(我当然是指unique_constraint/2)
我知道我可以:
使用Multi执行此,但是这创造了在后台单独的查询,而不是做它作为一个大的查询
使用try rescue块保留代码,但我想看看是否有更多 Elixir-y 方法来解决这个问题,因为模式匹配的哲学让它崩溃了术语。