将来のDBMSと、トランザクション性の観点からのRosreestrに対する私の願い



クライアントはデータベースと対話します。

サイトhttp://corchaosis.ruから、写真の作者JonathanTiong。



プログラマー(主にDelphi +あらゆる種類の異なるDBMS、最近はORAKL、+小さなPHP)であることに加えて、私には趣味があります-アパートの売買です。私は建設段階で多かれ少なかれ信頼できる開発者からおいしい価格でアパートを購入し(たとえば、現在そのような開発者は飛行機であり、メトロネクラソフカの近くのアパートは売りに出されています)、家の配達を待ちます(多くの場合2年後、安価なオファーがあります)、私はそれをします改装され、市場価格の95〜100%で販売されました。



それで、私は(他のみんなと同じように)RosReestrのトランザクション性の欠如の問題に直面しました。



Rosreestrのトランザクショントランザクションの欠如の問題



「トランザクション」のプログラミング、および不動産では、それは「代替手段との取引」(およびその一部として「安全な預金ボックスに関する合意」)であり、すべてがもう少し複雑です。私はあなたに言っています。



ヴァシャはペティアが売っているアパートを見に来ました。そして、Vasyaは価格も含めてすべてが本当に好きでしたが、Vasyaにはお金がありません。これが私たちの物語の始まりです。



ヴァシャは彼自身の財産を持っていますが、それは彼にとって特に必要ではないいくつかの価値があります-ロモノーソフは隣の家に住んでいました、天井の高さは7.5メートルです、果物を育てる基地とガーデナーマーケットが近くにあります、あなたはエアロエクスプレスに歩いて行くことができます、地下1がありますメーター、アパートの上に天文学的な観察に便利な屋根裏部屋があります。 Vasyaは、これらの機能が彼のアパートの価格を上げることを理解していますが、彼自身のためではありません。そして、彼はペティアのアパートを購入し、彼のアパートを売却することにしました。しかし、プチのアパートを買うためだけでなく、それを売るために。不動産業者の言葉では、これは「代替案が選択された」と呼ばれます。



それでは、この状況をペティアの視点から見てみましょう。事実、ペティアもお金を下げることに興味がなく、11の都市バリノールで自分のアパートを買うためにアパートを売っていますが、彼はまだどれを見ていないのです。不動産業者の言葉では、これは「代替案との取引」と呼ばれます。



中つ国の2人のエルフ、MaglorとMaedhrosは、Melkorに仕えるために送られるため、緊急に売却されるValinor市に(Petitの基準に従って)適切な不動産を持っています。不動産業者の言葉では、これは「無料販売」と呼ばれます。



それで、VasyaはクライアントSeryozhaを見つけます。今、ペティアはバリノールの街で彼に適した2つのオプションを見つけました。取引の登録に行きます。簡単にするために、トランザクションの参加者の誰もが住宅ローンを使用しておらず、少数株主がいないとしましょう。したがって、次のアクションを実行する必要があり

ます。1.SeryozhaはPetyaにお金を渡します。

2.Vasyaは自分のアパートをSeryozhaに引き渡します。

3.ペティアは自分のアパートをヴァシャに引き渡します。

4. MaglorまたはMaedhrosのいずれかが、ValinorのアパートをPeteに引き渡し、Seryozhaのお金を受け取ります。

5.マルコールとマエドロスはメルコールに仕えるためにモルドールに行きます。



次のスクリプトをRosreestrに送信して実行するのが理想的です。



取引を開始するVasyaのアパートをSeryozhaに渡してください。

PetyaのアパートをVasyaに渡してください。

開始

与えるペチャにMalkorのアパートを与える

Malkor IF_のにSeryozhaのお金を

ERROR:与える

ペチャにマイズロスのアパートを

マイズロスのにSeryozhaのお金を与える

エンド

トランザクションをコミット



これは、すべてのアパートに大人の(そして有能な)所有者が1人いて、価格が同じであり、不動産業者の支払い(ある場合)が取引段階の外で支払われると仮定した、代替の単純化されたトランザクションスクリプトです。



ただし、Rosreestrはトランザクション性をサポートしていません。すべてのアクションは、いずれかが完了していない場合にトランザクション全体をロールバックすることなく、順番に独立して次々に実行されます。 RosreestrとMFCが現金の送金で機能しないことを考えると、達成できる最大のことは、Vasya、Petit、Seryozha(トランザクションがまったく登録されていない場合)、およびその他の関係者がアクセスできる条件で、安全な預金ボックスにお金を入れることです。 Rosreestrによって登録された契約の彼らによる提示時に。 (ちなみに、銀行は契約の信憑性を独自に検証していません。つまり、取引の参加者の証券の信憑性を信頼しています)。



トランザクションの不完全な実行のリスクに加えて、別の問題は、他の参加者が完全な登録を待たずに新しい家に引っ越すことができる場合(こんにちは、光熱費の過少支払いの問題です!)、MaglorとMaedhrosはすぐにMelkorにサービスを提供できなくなり、おそらくMaglorはできなくなりますシルマリルを手に持ってください、彼は単に時間がありません。不動産取引は順次行われ、各取引が完了するまでに少なくとも9営業日かかります。



さらに、Rosreestrは、DDUの下で建設中の住宅の負担をサポートしていませんが、これは単純な未来に関連する基本的な行動である可能性があります。



それでは、DBMSに関する欠点と私の願いに移りましょう。



1)1つ目は、バージョン管理システムの欠如です。 Delphi側からサンドボックスで開発を行い、行った変更がコミットの瞬間まで他のプログラマーに表示されない場合、これはDBMSには当てはまりません。そして、たとえ彼らが戦闘データベースへの完全なアクセス(少なくとも私に割り当てられたタスクに必要なフレームワーク内で)で私を信頼し、これが起こったとしても、私はそれを発展させることはできません。デバッグ中は、すべてがクラッシュします。この石の時代は何ですか?開発者をサンドボックス化します。



2)2つ目は、現実の世界を説明する事前定義された標準化されたテーブルがないことです。私が働いていた各会社には、12か月間の名前(ロシア語と(少なくとも)英語、さまざまなロシア語の場合)を説明する独自の表形式があります!



3)3番目(ここではOraklの用語を使用します)、Selectと呼ばれるように、Returningを使用して単純なInsertまたはUpdateスクリプトを呼び出す方法はありません。おそらく、これらはOraklの問題ではなく、Delphi + Oracleジャンクションの問題です。



4)4番目-これを実行したくない場合に作成するプロシージャと関数に権限を割り当てる必要があります。手順と機能のユーザー権限を設定してから変更したくありません。Grantsを明示的に記述しなかった場合、システム自体が関連するオブジェクトを確認できず、それらを操作する権利に従って、特定のユーザーに関数を呼び出す権利を付与するかどうかを指定するのはなぜですか?関数とプロシージャを作成するときに、このための1つのキーワードを作成する準備ができています。または、さらに良いことに、ユーザーに実行を開始させ、アルゴリズムのブランチがユーザーに権限のない要求につながる場合、エラーでそれをスローします。



All Articles