Der Client interagiert mit der Datenbank.
Von der Website http://corchaosis.ru , Autor des Bildes Jonathan Tiong.
Ich bin nicht nur Programmierer (meistens Delphi + alle möglichen DBMS, kürzlich ORAKL + ein wenig PHP), sondern habe auch ein Hobby - den Kauf und Verkauf von Wohnungen. Ich kaufe eine Wohnung in der Bauphase von einem mehr oder weniger zuverlässigen Entwickler zu einem leckeren Preis (zum Beispiel ist jetzt ein solcher Entwickler Flugzeug, Wohnungen in der Nähe der U-Bahn Nekrasovka werden verkauft), ich warte auf die Lieferung des Hauses (oft zwei Jahre später, mit günstigen Angeboten passiert dies) renoviert und dann für 95-100% des Marktpreises verkauft.
Also stieß ich (wie alle anderen auch) auf das Problem der mangelnden Transaktionsfähigkeit von RosReestr.
Das Problem von Rosreestrs Mangel an Transaktionstransaktionen
Bei der Programmierung von "Transaktion" und bei Immobilien handelt es sich um "Deal with a Alternative" (und als Teil davon auch "Vereinbarung über einen Safe"), und dort ist alles etwas komplizierter. Ich sage dir.
Vasya besuchte die Wohnung, die Petya verkauft. Und Vasya mochte alles sehr, einschließlich des Preises, aber Vasya hat kein Geld. So beginnt unsere Geschichte.
Vasya hat sein eigenes Eigentum, das einige Werte hat, die für ihn nicht besonders notwendig sind - Lomonosov lebte im nächsten Haus, die Deckenhöhe beträgt siebeneinhalb Meter, es gibt eine Obstbasis und den Gärtnermarkt in der Nähe, man kann zu Fuß zum Aeroexpress gehen, es gibt einen Keller mit einer Höhe von 1 Meter über der Wohnung befindet sich ein Dachboden für astronomische Beobachtungen. Vasya versteht, dass diese Eigenschaften den Preis seiner Wohnung erhöhen, aber nicht für sich. Und er beschließt, Petjas Wohnung zu kaufen und seine Wohnung zu verkaufen. Aber um es zu verkaufen, um Petits Wohnung zu kaufen, und nicht nur. In der Sprache der Makler heißt dies: "Die Alternative ist ausgewählt."
Betrachten wir diese Situation nun aus Petjas Sicht. Tatsache ist, dass Petja auch nicht daran interessiert ist, Geld abzuwerten, er verkauft eine Wohnung, um sich eine Wohnung in der Elfenstadt Valinor zu kaufen, aber er hat sich noch nicht angesehen, welche. In der Sprache der Makler wird dies als „Umgang mit einer Alternative“ bezeichnet.
Zwei Elfen von Mittelerde, Maglor und Maedhros, haben Immobilien (nach Petits Kriterien) in der Stadt Valinor, die dringend verkauft werden, da sie nach Melkor geschickt werden. In der Sprache der Makler wird dies als "Free Sale" bezeichnet.
Also findet Vasya einen Kunden, Seryozha. Jetzt findet Petja in der Stadt Valinor zwei für ihn geeignete Optionen. Wir gehen zur Registrierung der Transaktion. Nehmen wir der Einfachheit halber an, dass keiner der Teilnehmer an der Transaktion eine Hypothek verwendet und keinen Minderheitsaktionär hat. Daher müssen jetzt die folgenden Aktionen stattfinden:
1. Seryozha gibt das Geld an Petya.
2. Vasya übergibt seine Wohnung an Seryozha.
3. Petja übergibt seine Wohnung an Vasya.
4. Entweder Maglor oder Maedhros übergeben ihre Wohnung in Valinor an Pete und erhalten Seryozhas Geld.
5. Malkor und Maedhros gehen nach Mordor, um Melkor zu dienen.
Es wäre ideal, das folgende Skript zur Ausführung an Rosreestr zu senden:
TRANSAKTION STARTEN
Gib Seryozha Vasyas Wohnung.
Gib Vasya Petjas Wohnung.
beginnen
Gib Malkor der Wohnung zu Petya Geben
Seryozha Das Geld zu Malkor
IF_ERROR: Gib
Maedhros der Wohnung zu Petya
Geben Seryozha Das Geld zu Maedhros
Ende
COMMIT TRANSACTION
Dies ist ein vereinfachtes Transaktionsskript mit einer Alternative, vorausgesetzt, dass alle Wohnungen einen erwachsenen (und fähigen) Eigentümer haben, dass ihre Preise gleich sind und dass die Zahlung von Maklern (falls vorhanden) außerhalb der Transaktionsphasen erfolgt.
Rosreestr unterstützt jedoch keine Transaktionalität. Alle Aktionen werden nacheinander und unabhängig voneinander ausgeführt, ohne dass die gesamte Transaktion zurückgesetzt wird, wenn eine davon nicht abgeschlossen wurde. Das Maximum, das erreicht werden kann - da Rosreestr und der MFC nicht mit der Überweisung von Bargeld arbeiten - besteht darin, Geld in ein Schließfach zu legen, mit den Bedingungen für den Zugang zu ihnen für Vasya, Petit, Seryozha (wenn überhaupt keine Transaktion registriert ist) und andere Akteure. auf Vorlage von Verträgen, die von Rosreestr registriert wurden. (Übrigens überprüfen Banken die Echtheit von Verträgen nicht unabhängig, dh sie vertrauen der Echtheit der Wertpapiere der Teilnehmer an der Transaktion).
Neben dem Risiko einer unvollständigen Ausführung der Transaktion besteht ein weiteres Problem darin, dass Maglor und Maedhros Melkor nicht bald bedienen können, wenn andere Teilnehmer in ihr neues Zuhause einziehen können, ohne auf die vollständige Registrierung zu warten (Hallo, das Problem der Unterzahlung von Stromrechnungen!), Und Maglor möglicherweise nicht in der Lage sein wird halte die Silmarils in seinen Händen, er wird einfach keine Zeit haben. Immobilientransaktionen werden nacheinander ausgeführt, und jede Transaktion dauert mindestens 9 Werktage.
Darüber hinaus unterstützt Rosreestr nicht die Belastung von im Bau befindlichen Wohnungen im Rahmen der DDU, könnte aber eine elementare Maßnahme in Bezug auf eine einfache Zukunft sein.
Kommen wir nun zu den Nachteilen und meinen Wünschen bezüglich des DBMS
1) Das erste ist das Fehlen eines Versionskontrollsystems. Wenn ich von Delphi-Seite die Entwicklung in meiner Sandbox durchführe und die von mir vorgenommenen Änderungen erst zum Zeitpunkt ihres Festschreibens in anderen Programmierern angezeigt werden, ist dies beim DBMS nicht der Fall. Und selbst wenn sie mir vollen (zumindest im Rahmen der für die mir zugewiesene Aufgabe erforderlichen) Zugriff auf die Kampfdatenbank anvertrauen, und dies geschieht, kann ich mich nicht darauf weiterentwickeln. Während ich debugge, stürzt alles ab. Was ist das für eine Steinzeit ??? Sandbox die Entwickler.
2) Das zweite ist das Fehlen vordefinierter standardisierter Tabellen, die die reale Welt beschreiben. Jedes Unternehmen, in dem ich gearbeitet habe, hat ein eigenes Tabellenformat, in dem die Namen zwölf Monate lang (auf Russisch und (mindestens) Englisch, in verschiedenen russischen Fällen) beschrieben werden!
3) Drittens - und hier werde ich die Terminologie von Orakl verwenden - gibt es keine Möglichkeit, ein einfaches Einfüge- oder Aktualisierungsskript mit Returning aufzurufen, wie wir Select nennen. Vielleicht sind dies nicht Orakls Probleme, sondern Delphi + Oracle-Verbindungsprobleme.
4) Viertens - die Notwendigkeit, den von mir erstellten Verfahren und Funktionen Autorität zuzuweisen, wenn ich dies nicht tun möchte. Ich möchte die Benutzerberechtigung für die Prozedur und Funktion nicht festlegen und dann ändern. Warum konnte das System, wenn ich keine expliziten Zuschüsse schrieb, die beteiligten Objekte nicht selbst betrachten und gemäß den Rechten, mit ihnen zu handeln, bestimmten Benutzern das Recht einräumen oder nicht, die Funktion aufzurufen? Ich bin bereit, ein Schlüsselwort dafür zu schreiben, wenn ich Funktionen und Prozeduren schreibe. Oder, noch besser, lassen Sie den Benutzer mit der Ausführung beginnen. Wenn der Zweig des Algorithmus ihn zu einer Anforderung führt, für die der Benutzer keine Rechte hat, wird er mit einem Fehler verworfen.