想象一下一个铁路轨道,我的目标是存储该轨道上存在的所有轨道车。每个轨道车都有一个位置。假设轨道上有100个轨道车,那么每个轨道车对象的TrackPosition范围为1-100。
实质上,这就是我们现在正在做的,一个Track带有子Railcar,每个Railcar都有一个整数TrackPosition。
添加新的轨道车后,我们只需将轨道上的汽车数量+ 1来保存新汽车的位置。
我们在几个不同领域遇到了问题:
我们想使用AWS Lambda同时添加汽车。这带来了一个问题,因为两个函数可能会同时计算“轨道总车数+ 1”的逻辑线。当他们去保存时,两辆车的位置相同。在AWS Lambda中,无法锁定那部分代码(据我所阅读的内容)。我们目前已通过将Lambda设置为同步触发(并发设置为1)来解决此问题,这显然对于性能而言并不理想。
我们想在轨道中间添加一辆汽车。这将涉及乘坐任何位置更大的汽车并将其全部增加。编写一些代码来做到这一点并不难,但是..
我想知道我是否缺少SQL内的一些基本知识,这些基本知识可以以一种不太容易出错的方式实现我所追求的目标。我的做法似乎很幼稚。我已经研究了序列,但是不确定它们是否可以解决我的并发问题。
任何见识将不胜感激。我们正在将Entity Framework Core 2与SQL Server一起使用。