我们需要创建一个必须区分实体间关系的应用程序。
例如,假设我们正在创建一个应用程序来建模宠物之间的疾病实例,并定期从多个XML源收集数据。
我们有代表宠物的模型和代表疾病的模型。我们有兴趣在每次收集XML数据时检查从宠物到疾病的“联接”中的变化。
仅仅区分XML是不够的,因为我们使用的是多个源,并且必须有自己的中间模型。
我不知道是否有办法做到这一点,但我想如果我们要在关系数据库管理系统上构建pets_diseases连接表,我们可以区别对待吗?
我对图形数据库也不太了解,所以欢迎你提出建议。如果这是正确的做法,Neo4J看起来是一个可信的候选人。
发布于 2016-08-02 16:02:37
我认为这取决于你想从采集的样本中得到多复杂的东西。您可能会开始在某个时间间隔收集样本并对它们进行区分,但随着时间的推移,我怀疑您会变得更加复杂,意识到您从不同来源收集到的样本更加交错。
在继续进行时,您可能最终会看到,为数据的每一行收集日期/时间是有好处的,因为即使在从一个源收集的数据中,信息片段也有时间差异。
我建议您尽可能地将时间信息推送到系统中,包括在收集过程中深入到“前端”中的XML模型(单个行正在注明日期)和中间数据库模型(相同)。这将允许所有收集到的数据在数据库中共存,并将提供运行更丰富查询的机会。
pet-table: id, pet-name, start-date, end-date
pet-condition: pet-id, condition-id, info-capture-date, status
condition-table: id, description给定宠物条件信息捕获日期,您可以为同一条件存储多个数据时间点(和/或同一时间存储多个条件)。
看一看下面的文章,了解一些思考的内容:时间序列数据库。
我建议的格式也是日志数据库友好的,或者是事件存储友好的,因为它本质上是不可变的(只写一次/只追加一次)。但是,它并不直接存储当前状态,因此如果需要,可以为其编写查询。(如果这确实是您所需要的,您可以将其缓存在数据库中)。
虽然大多数数据库都会处理日志类型的数据,但是如果您的数据收集变得自动化,而且流很大,那么就会有专门的数据库来处理日志样式的收集,比如MongoDB。
如果您有许多不同的动态关系(在模式的意义上),我会查看一个图形数据库。否则,我可能会尝试使用关系数据库。
https://softwareengineering.stackexchange.com/questions/326413
复制相似问题