如何更改此"架构"没有交易的需要(ACID)?

时间:2017-05-28 22:21:12

标签: node.js mongodb mongoose transactions mongoose-schema

我使用Mongoose在MongoDB中有一个类似下面的模型:

Stuff
{
_id: ObjectId...,
stuff: String..,
someBoolean: Boolean,
description: String,
transactionsOfThisStuff: [{
  trnsactionNumber: objectId?
  date: Date.now()
  info: String
 }]
}

正如你所看到的,想法是移动东西,我需要记录每一个动作,所以我做了一系列的交易"我保留历史的地方。

进行"交易"有一些要求,例如," someBoolean"必须具有一定的价值等 当进行交易时,必须更新某些东西的值。

另外,我必须能够同时移动多个东西(移动一个桌子,一个plumbus等),所以它们都将具有相同的" transactionNumber"在每个文件中。

我在这个模型中看到的问题是,我不能轻易地列出最后10个动作,或者我没有找到有效的方法来获取已经移动的Stuff" transactionNumber"

如果使用两种型号:

Stuff
{
      _id: ObjectId...,
      stuff: String..,
      someBoolean: Boolean,
      description: String,
}

transaction
{
     _id: objectId,
     date: Date.now(),
     info: String,
     stuff: [{type:ObjectId, ref: 'Stuff', requiered: true}]
}

这个想法的问题是,我需要ACID,因为如果移动多个Stuff,我需要更新" Stuff" :/

编辑:

我保存了硬件部件,如CPU,鼠标,键盘,显示器等。每个部件都存储在"逻辑"仓库。我可以制作不同类型的"交易",比如将它移到另一个仓库,交给一个人,收回它等等。每个交易都必须被跟踪,所以我可以拥有该项目的历史记录。此外,我可以在同一交易中同时移动多个项目,例如在交易编号21361764中我移动了10个不同的项目。同时,我需要更新项目中的一些信息,如isStored:False,True。

事务本身必须具有执行日期,客户端,用户(正在执行事务)和项目数组等。

编辑上面的想法是我到目前为止所得到的,但每个人都有问题,因为我需要交易。必须有办法解决这个问题,而不必涉及关系数据库。

0 个答案:

没有答案