我对未来的 DBMS 以及 Rosreestr 在事务性方面的祝愿

我对未来的 DBMS 以及 Rosreestr 在事务性方面的祝愿
客户端与数据库进行交互。
从网站 http://corchaosis.ru,乔纳森·张。

除了我是一名程序员(主要是Delphi+各种不同的DBMS,最近是ORACLE,+一点PHP)之外,我还有一个爱好——买卖公寓。 我在施工阶段以不错的价格从或多或少可靠的开发商那里购买了一套公寓(例如,现在Samolet就是这样的开发商,Nekrasovka地铁站附近的公寓正在出售),等待房子交付(通常是两个几年后,这种情况发生在廉价的报价上),我翻新它,然后以市场价格的 95-100% 出售。

所以,我(和其他人一样)面临着 RosReestr 缺乏交易性的问题。

Rosreestr缺乏交易性交易的问题

在编程中,它是“交易”,在房地产中,它是“替代交易”(还有,作为其中的一部分,“保险箱协议”),而且它有点复杂。 我告诉你。

瓦夏来看佩蒂亚正在出售的公寓。 瓦夏真的很喜欢一切,包括价格,但瓦夏没有钱。 我们的故事就是这样开始的。

瓦夏拥有自己的财产,其中有一些对他来说并不是特别必要的价值 - 罗蒙诺索夫住在隔壁的房子里,天花板高度为七米半,有一个水果和蔬菜基地和萨多沃德市场附近可以乘坐Aeroexpress,公寓下面有一个1米高的地下室,公寓上面有一个阁楼方便天文观测。 瓦夏明白这些功能会增加他公寓的价格,但不会增加他自己的价格。 他决定买下佩蒂亚的公寓并卖掉自己的公寓。 但出售正是为了购买佩蒂亚的公寓,而不仅仅是为了购买。 用房地产经纪人的话说,这称为“已选择替代方案”。

现在让我们从Petya这边来看一下这个情况。 事实上,佩蒂亚也对坐在贬值的钱上不感兴趣,他正在出售公寓,以便为自己在精灵城市维林诺购买一套公寓,但他还没有看过哪一套。 用房地产经纪人的话说,这称为“替代方案”。

中土世界的两个精灵,梅格洛尔和梅兹罗斯,在维林诺市拥有合适的(按照佩蒂亚的标准)房地产,该房地产被紧急出售,因为他们要为米尔寇服务。 用房地产经纪人的话说,这称为“自由销售”。

于是,瓦夏找到了一个客户,谢廖扎。 现在,彼佳在维林诺城找到了两个适合他的选择。 我们即将敲定这笔交易。 为简单起见,我们假设交易各方都没有使用抵押贷款,也没有未成年人作为股东。 因此,现在必须执行以下操作:
1. Seryozha 给 Petya 钱。
2. 瓦夏将自己的公寓送给了谢廖扎。
3. Petya把他的公寓给了Vasya。
4. Maglor或Maedhros将他们在Valinor的公寓转移到Peta并收到Seryozha的钱。
5. Malkor和Maedhros前往Mordor为Melkor服务。

最好将以下脚本提交给 Rosreestr 执行:

开始交易
将瓦夏的公寓交给谢廖扎。
将彼佳的公寓交给瓦夏。
开始
将马尔科的公寓交给佩蒂亚
将 Seryozha 的钱交给 Malkor
如果错误:
将 Maedhros 的公寓交给 Petya
将 Seryozha 的钱交给 Maedhros
结束
提交交易

这是一个带有替代方案的简化交易脚本,假设所有公寓都有一个成年(且有能力)业主,它们的价值相等,并且无论交易处于哪个阶段,都会向房地产经纪人(如果有)支付费用。

然而,Rosreestr 不支持事务性。 所有操作都将按顺序、独立地、一个接一个地执行,如果其中一个操作失败,则不会回滚整个事务。 考虑到 Rosreestr 和 MFC 不支持现金转账,最多可以将资金存入保险箱,并满足 Vasya、Petya、Seryozha 访问该资金的条件(如果没有交易)已注册)和其他参与者,在出示 Rosreestr 注册的合同后。 (顺便说一句,银行并不独立验证合同的真实性,也就是说,他们信任交易双方文件的真实性)。

除了交易未完全完成的风险之外,另一个问题是,如果其他参与者无需等待完全注册就可以搬进新家(你好,水电费少付的问题!),那么 Maglor 和 Maedhros 不会很快去侍奉米尔寇,也许梅格洛尔将无法——他根本没有时间将精灵宝钻握在手中。 房产交易按顺序进行,每笔交易的执行至少需要9个工作日。

此外,Rosreestr 不支持在 DDU 下建造住房负担,但可以,这是与简单未来相关的基本行动。

现在让我们谈谈 DBMS 的缺点和我的愿望

1)首先是缺乏版本控制系统。 如果在 Delphi 方面,我在自己的沙箱中进行开发,并且我所做的更改在提交之前不会显示给其他程序员,那么 DBMS 的情况就不是这样。 即使我被信任可以完全(至少在分配给我的任务所需的范围内)访问战斗数据库,并且发生这种情况,我也无法在其上进行开发。 当我调试时,一切都会崩溃。 这是什么石器时代??? 为开发人员制作一个沙箱。

2)第二是缺乏描述现实世界的预定义标准化表格。 我工作过的每家公司都有自己的表格格式来描述十二个月的名称(用俄语和(至少)英语,在不同情况下用俄语)!

3) 第三 - 在这里我将使用 Oracle 术语 - 无法调用使用 Returning 的简单插入或更新脚本,就像我们调用 Select 的方式一样。 或许这些都不是Oracle的问题,而是Delphi+Oracle的接口的问题。

4)第四 - 需要为我创建的程序和功能分配权力,而我不想这样做。 我不想设置然后更改过程和函数的用户权限。 为什么如果我没有显式地写Grants,系统本身就不能查看所涉及的对象,并根据它们的操作权限,授予或不授予某些用户调用函数的权利? 我准备在编写函数和过程时为此编写一个关键字。 或者,更好的是,让用户开始执行,如果算法分支引导他到用户没有权限的请求,他会抛出错误并抛出该请求。

来源: habr.com

添加评论