【发布时间】:2017-12-15 19:52:34
【问题描述】:
如何验证图(顶点和边)数据,就像在 OrientDB 中发生的那样? 例如, 如果我的图有格式的顶点/边
{
"name": :any_name,
"age" : 13
}
如何将它与定义明确的架构(带有验证)相关联?
在 OrientDB 中,还具有将数据存储在顶点和边中的特性,并且每个模式都定义良好。如何在 arangoDB 中执行此操作?
【问题讨论】:
如何验证图(顶点和边)数据,就像在 OrientDB 中发生的那样? 例如, 如果我的图有格式的顶点/边
{
"name": :any_name,
"age" : 13
}
如何将它与定义明确的架构(带有验证)相关联?
在 OrientDB 中,还具有将数据存储在顶点和边中的特性,并且每个模式都定义良好。如何在 arangoDB 中执行此操作?
【问题讨论】:
“开箱即用”ArangoDB 不支持模式强制。显然,这在某些用例中可能是一个重大缺陷。
但是,ArangoDB 的 Max Neunhöffer 认为,只要做一些工作,就可以关闭标准数据库 API,留下一个基于 ArangoDB 的系统来强制执行模式:
因此,ArangoDB 可以变成一个严格执行模式的持久性引擎,因为它的 HTTP API 可以通过用 JavaScript 编写的用户代码进行扩展,该代码在数据库服务器中执行并直接访问数据。可以逐步发展客户端代码使用数据存储的方式,并将其缓慢转移到特殊的、用户定义的路由,这些路由强制执行目前稳定的数据库模式,特别是对于写入操作。因此,可以简化大量客户端代码,因为一旦涵盖了所有写入操作,就会突然依赖 API 强制执行的严格模式。
最后,当你为应用程序定制了整个 API 时,你甚至可以关闭标准的数据库 API,这进一步增加了安全性和清洁度。通过这最后一步,我们已经获得了一种软件架构,该架构可以直接在数据库服务器中以特定于应用程序的方式实现以数据为中心的微服务,这有利于防止错误,有利于提高性能(可以在靠近数据的地方运行复杂的查询),有利于应用程序设计的简单性和可维护性。即使是 devops 也是这样,因为微服务可以独立部署和更新。
https://www.arangodb.com/2015/03/agile-development-vs-schema-enforcement
【讨论】: