
Der Kunde interagiert mit der Datenbank.
Von der Website , gemalt von Jonathan Tiong.
Neben meiner Tätigkeit als Programmierer (hauptsächlich Delphi und verschiedene Datenbankmanagementsysteme, zuletzt Oracle, sowie ein wenig PHP) habe ich ein Hobby: Ich kaufe und verkaufe Wohnungen. Ich kaufe eine Wohnung in der Bauphase von einem mehr oder weniger zuverlässigen Bauträger zu einem attraktiven Preis (zum Beispiel ist derzeit ein solcher Bauträger Samoljet, die Wohnungen in der Nähe der U-Bahnstation Nekrasovka werden verkauft), warte auf die Fertigstellung des Hauses (oft zwei Jahre später, solche Angebote treten häufig auf), mache Renovierungen und verkaufe dann die Wohnung für 95-100% ihres Marktwertes.
Also ich (wie viele andere) hatte das Problem, dass es im Rosreestr keine Transaktionsfähigkeit gab.
Das Problem der fehlenden Transaktionsfähigkeit im Rosreestr.
In der Programmierung bezeichnet man dies als 'Transaktion', in der Immobilienbranche als 'Deal mit Alternativen' (und als Teil davon gibt es den 'Vertrag über das Bankschließfach'), und dort ist alles etwas komplizierter. Ich erzähle.
Vasya kam zur Besichtigung einer Wohnung, die Petya verkauft. Vasya war von allem begeistert, einschließlich des Preises, aber Vasya hat kein Geld. So beginnt unsere Geschichte.
Vasya hat eine Immobilie, die einige für ihn nicht besonders wertvolle Eigenschaften hat – im Nachbarhaus lebte Lomonossow, die Deckenhöhe beträgt sieben Meter fünfzig, in der Nähe befindet sich eine Obst- und Gemüsebasis sowie der Markt Sadowod, und man kann bequem mit dem Aeroexpress dorthin gelangen. Unter der Wohnung gibt es einen ein Meter hohen Keller und über der Wohnung einen Dachboden, der sich gut für astronomische Beobachtungen eignet. Vasya ist sich bewusst, dass diese Merkmale den Wert seiner Wohnung steigern, aber nicht für ihn persönlich. Er entscheidet sich, Petjas Wohnung zu kaufen und seine eigene zu verkaufen. Aber er möchte sie gerade verkaufen, um Petjas Wohnung zu kaufen und nicht einfach so. In der Sprache der Immobilienmakler nennt man das – „Alternative ausgewählt“.
Nun betrachten wir diese Situation aus Petjas Perspektive. Der Punkt ist, dass Petja ebenfalls nicht auf entwertenden Geldmitteln sitzen möchte. Er verkauft seine Wohnung, um sich eine Wohnung in der elfischen Stadt Valinor zu kaufen, aber welche genau, hat er noch nicht angesehen. In der Sprache der Immobilienmakler nennt man das – „Geschäft mit einer Alternative“.
Zwei Elfen aus Mittelerde, Maglor und Maedros, besitzen passende Immobilien (nach Petjas Kriterien) in der Stadt Valinor, die sie dringend verkaufen, da sie sich in den Dienst von Melkor begeben. In der Sprache der Immobilienmakler nennt man das – "Freier Verkauf".
Also findet Wassja den Kunden Serjoža. Jetzt sucht Petja zwei passende Optionen in der Stadt Valinor. Wir gehen zur Vertragsabwicklung über. Nehmen wir der Einfachheit halber an, dass niemand der Beteiligten eine Hypothek nutzt und keine minderjährigen Miteigentümer hat. Nun müssen die folgenden Schritte durchgeführt werden:
1. Serjoža übergibt das Geld an Petja.
2. Wassja übergibt seine Wohnung an Serjoža.
3. Petja übergibt seine Wohnung an Wassja.
4. Entweder Maglor oder Maedros übergeben ihre Wohnung in Valinor an Petja und erhalten das Geld von Serjoža.
5. Malcor und Maedros gehen nach Mordor, um Melkor zu dienen.
Ideal wäre es, das folgende Skript zur Ausführung beim Rosregister zu übergeben:
START TRANSACTION
Die Wohnung von Wassja an Serjoža übergeben.
Die Wohnung von Petja an Wassja übergeben.
begin
Die Wohnung von Malcor an Petja übergeben.
Das Geld von Serjoža an Malcor übergeben.
IF_ERROR:
Die Wohnung von Maedros an Petja übergeben.
Das Geld von Serjoža an Maedros übergeben.
end
COMMIT TRANSACTION
Dies ist ein vereinfachtes Transaktionsskript mit einer Alternative, die voraussetzt, dass alle Wohnungen einen einzigen erwachsenen (und geschäftsfähigen) Eigentümer haben, dass ihre Werte gleich sind und dass die Maklergebühren (sofern vorhanden) unabhängig von den Phasen der Transaktion bezahlt werden.
Allerdings unterstützt das Grundbuchamt keine Transaktionssicherheit. Alle Handlungen werden nacheinander und unabhängig voneinander ausgeführt, ohne dass die gesamte Transaktion zurückgesetzt wird, falls eine der Handlungen nicht erfolgreich ist. Das Maximum, was erreicht werden kann — unter Berücksichtigung, dass das Grundbuchamt und die MFC keine Barübertragungen unterstützen — ist, Geld in einem Bankschließfach zu hinterlegen, wobei der Zugang zu diesem Geld an die Bedingungen von Vasia, Petia und Serjozha gekoppelt ist (sofern überhaupt keine Transaktion registriert ist), sowie an andere beteiligte Personen, die im Nachhinein die von dem Grundbuchamt registrierten Verträge vorlegen. (Übrigens führen Banken keine Überprüfung der Echtheit der Verträge selbstständig durch, d.h. sie vertrauen der Echtheit der Dokumente der Transaktionsbeteiligten.)
Neben den Risiken einer unvollständigen Transaktion gibt es das Problem, dass, wenn andere Teilnehmer in ihre neuen Wohnungen ziehen können, ohne auf die vollständige Abwicklung zu warten (Hallo, das Thema Nachzahlungen für die Nebenkosten!), Maglor und Maedhros nicht bald Melkor dienen werden. Möglicherweise wird Maglor die Silmarils nicht in seinen Händen halten können, da er einfach nicht schnell genug sein wird. Immobiliengeschäfte werden nacheinander abgewickelt, und die Bearbeitung jeder Transaktion dauert mindestens 9 Werktage.
Darüber hinaus unterstützt das Grundbuchamt keine belasteten Immobilien, die auf Grundlage eines Bauvertrags erstellt werden, obwohl es das könnte – das wäre eine grundlegende Aktion in Bezug auf einen einfachen Futures-Kontrakt.
Jetzt kommen wir zu den Nachteilen und meinen Wünschen bezüglich der Datenbankmanagementsysteme.
1) Zunächst einmal fehlt ein System zur Versionskontrolle. Während ich in Delphi in meiner eigenen Sandbox entwickle, was ich dort ändere, erscheint bei anderen Programmierern erst nach meinem Commit. Bei der Datenbank verhält es sich jedoch anders. Selbst wenn ich einen vollständigen (zumindest für die anstehende Aufgabe notwendigen) Zugriff auf die Produktionsdatenbank habe, kann ich nicht direkt daran arbeiten. Solange ich debugge, wird alles zusammenbrechen. Ist das etwa das Mittelalter??? Schaffen Sie eine Sandbox für die Entwickler.
2) Zweitens fehlt es an vorinstallierten, standardisierten Tabellen, die die reale Welt abbilden. In jedem Unternehmen, in dem ich gearbeitet habe, gab es ein eigenes Tabellenformat, das die Bezeichnungen (auf Russisch und (zumindest) Englisch, in verschiedenen Kasus des Russischen) der zwölf Monate beschreibt!
3) Drittens — und hier bediene ich mich der Terminologie von Oracle — fehlt die Möglichkeit, ein einfaches Insert- oder Update-Skript mit Returning aufzurufen, genauso wie wir Select aufrufen. Möglicherweise liegt das nicht an Oracle, sondern an der Schnittstelle zwischen Delphi und Oracle.
4) Der vierte Punkt ist die Notwendigkeit, den von mir erstellten Verfahren und Funktionen Berechtigungen zuzuweisen, wo ich das nicht möchte. Ich möchte nicht die Berechtigungen von Benutzern für Verfahren und Funktionen festlegen und später ändern. Warum könnte das System, wenn ich definitiv keine Grants geschrieben habe, nicht selbst die beteiligten Objekte überprüfen und je nach den Rechten zur Interaktion mit ihnen den Benutzern das Recht auf den Aufruf der Funktion erteilen oder nicht? Ich wäre bereit, dafür beim Schreiben von Funktionen und Verfahren ein Schlüsselwort einzuführen. Oder, noch besser, der Benutzer könnte die Ausführung starten, und wenn der Programmablauf zu einer Anfrage führt, für die der Benutzer keine Rechte hat, würde er mit einem Fehler ausgegeben.
Quelle: habr.com
