我對未來的 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,為什麼系統本身不能查看所涉及的對象,並根據與它們一起操作的權限,授予或不授予某些用戶調用函數的權利? 我準備在編寫函數和過程時為此編寫一個關鍵字。 或者,更好的是,讓使用者開始執行,如果演算法分支引導他到使用者沒有權限的請求,他會拋出錯誤並拋出該請求。

來源: www.habr.com

添加評論