Randy Merilatt, Chief Technology Officer, erläutert die Vor- und Nachteile von RDM Embedded 10.0. Als einer der ursprünglichen Entwickler des Projekts spricht Randy über neue Kern-API-Funktionen, RDMes Hinzufügung von SQL und vieles mehr.
Bevor ich die CTO-Rolle vollständig übernehme, bin ich noch dabei, meine endgültigen Aufgaben als Hauptentwickler des neuen SQL für zu erfüllen RDM Embedded (RDMe). In diesem Blog-Artikel möchte ich einige der Erfahrungen erzählen, die ich als Softwareentwickler mit RDMe gemacht habe. Nun, zugegeben, ich bin nicht das, was man als objektiven Benutzer betrachten würde. Ich bin unverfroren voreingenommen. Darüber hinaus bin ich Experte für die Verwendung von RDMe. Immerhin war ich einer der ursprünglichen Entwickler des Produkts. Ich habe jedoch seit vielen Jahren keine technische Beteiligung an seiner Entwicklung und bin jetzt ein Benutzer des Produkts der technischen Bemühungen anderer. Also, was ich teilen werde, ist wahr und ich übertreibe nicht.
SQL ist im Wesentlichen nur ein RDMe-Anwendungsprogramm. Während wir der RDMe-Laufzeit einige neue Kern-API-Funktionen hinzugefügt haben, um die Anforderungen von SQL zu unterstützen, stehen diese neuen Funktionen allen Benutzern zur Verfügung, sodass SQL von RDMe nichts verwendet, was nicht für alle verfügbar ist. Da sich SQL zum Zeitpunkt dieses Schreibens noch in der Entwicklung befindet, muss ich angeben, dass ich RDMe hauptsächlich in einem Test- und Debug-Modus verwendet habe. Dies bedeutet jedoch nicht, dass RDMe nicht intensiv genutzt wurde, da eine der Beispieldatenbanken, auf die im neuen SQL-Benutzerhandbuch verwiesen wird, mehrere Tabellen (Datensatztypen) enthält, die jeweils weit über 100.000 Zeilen enthalten (Datensatzvorkommen). In der Tabelle am Ende dieses Artikels werden alle in SQL verwendeten Kern-API-Funktionen aufgeführt, um Ihnen einen Eindruck von der Breite der RDMe-Laufzeitnutzung zu geben. SQL verwendet auch viele der RDMe PSP-Funktionen (Platform Support Package).
Die verwendete Version von RDMe ist die neue Version, die mit SQL veröffentlicht wird. Es basiert auf RDMe 10.0. Ich habe meine Tests mit einem oder mehreren (beim Testen von Datenbankgewerkschaften) RDMe Transactional File Servern (TFS) durchgeführt, die als separate Prozesse auf meinem Quad-Core-Windows 7-Computer ausgeführt werden. Bei all den Tests, die ich bisher durchgeführt habe, sind viele Fehler in meinem eigenen (neuen) Code aufgetreten, aber ich habe nur sehr wenige Fehler in der RDMe-Laufzeit festgestellt. Tatsächlich waren die einzigen Fehler, auf die ich gestoßen bin, die neue Funktionalität, die der RDMe-Laufzeit hinzugefügt wird, um SQL zu unterstützen (übrigens später behoben). Ich hatte keinerlei Probleme mit der Verwendung des RDMe 10.0-Systems. Es hat für mich mit sehr guter Leistung gearbeitet und ist ein Hochverfügbarkeitsdatenbank. Tatsächlich scheint dies auch für unsere anderen RDMe 10.0-Benutzer zu gelten. Seit seiner Veröffentlichung im vergangenen Juli haben wir nur sehr wenige Berichte von unseren Benutzern über Probleme damit erhalten - ein Verdienst für die großartige Arbeit, die das Q / A-Team von Raima geleistet hat.
Ich habe die TFS-Architektur geliebt, weil sie noch nicht abgestürzt ist. SQL ist während Debug-Sitzungen häufig abgestürzt (unvermeidlicher Speicherfehler usw.), aber das TFS erkennt einfach die Trennung und läuft weiter. Da die RDMe-Laufzeit vom TFS getrennt ist, ist es für eine Anwendung viel schwieriger, die Datenbank zu beschädigen (nicht unmöglich, nur schwieriger). Beim Testen und Debuggen von SQL ist noch keine Datenbankbeschädigung aufgetreten.
Ich mag auch die schreibgeschützte Transaktionsfunktion und habe ihre Verwendung in die SELECT-Anweisungsverarbeitung des neuen SQL integriert. Wenn der schreibgeschützte Transaktionsmodus verwendet wird, wird beim Ausführen einer SELECT-Anweisung automatisch der Aufruf d_trrobegin ausgegeben, anstatt die erforderlichen Tabellenlesesperren auszugeben. Es sind keine Sperren erforderlich und es erfolgt keine Blockierung von Datenbankoperationen. Es ist sehr schnell und sehr sauber.
Wenn Sie ein RDM Embedded-Benutzer sind und sich noch nicht für ein Upgrade auf Version 10.0 entschieden haben, möchte ich Sie dazu ermutigen. Informieren Sie sich über die Funktionen der neuen TFS-Architektur. Ich glaube, die Flexibilität und Zuverlässigkeit, die Sie gewinnen werden, ist es wert.
Laden Sie RDM Embedded jetzt herunter
Liste der RDMe Core API-Funktionen mit X, die die in SQL verwendeten Funktionen angeben | |||||
---|---|---|---|---|---|
* Neue Funktionen, die freigegeben werden sollen, sind kursiv geschrieben | |||||
d_blobdelete | X. | d_findnm | X. | d_recfrst | X. |
d_blobread | X. | d_findpm | X. | d_reclast | |
d_blobseek | d_fldnum | d_reclock | |||
d_blobsize | X. | d_freeall | X. | d_reclstat | X. |
d_blobtell | d_iclose | d_recnext | X. | ||
d_blobtruncate | d_initfile | d_recnum | |||
d_blobwrite | X. | d_initialize | X. | d_recprev | |
d_close | X. | d_internals | d_recread | X. | |
d_closetask | X. | d_iopen | X. | d_recset | X. |
d_cmtype | d_iopen_ptr | X. | d_rectot | X. | |
d_connect | X. | zerstückeln | X. | d_recwrite | X. |
d_cotype | d_isowner | X. | d_rerdcurr | ||
d_crget | X. | d_keydel | d_set_dberr | X. | |
d_crread | X. | d_keydir* | X. | d_setdb | |
d_crset | X. | d_keyexist | d_setfree | ||
d_crtype | X. | d_keyfind | X. | d_setkey | |
d_crwrite | X. | d_keyfree | d_setlock | ||
d_csmget | d_keyfrst | X. | d_setlstat | ||
d_csmread | d_keylast | d_setmm | |||
d_csmset | X. | d_keylock | d_setmo | ||
d_csmwrite | d_keylstat | d_setmr | X. | ||
d_csoget | X. | d_keynext | X. | d_setnum | |
d_csoread | X. | d_keyprev | X. | d_setom | |
d_csoset | X. | d_keyrdstate | X. | d_setoo | |
d_csowrite | d_keyread | X. | d_setor | X. | |
d_curkey | d_keystore | d_setpages | |||
d_dberr | d_keyszstate | X. | d_setrm | ||
d_dbnum | X. | d_keywrstate | X. | d_setro | |
d_dbsetini | d_lmstat | d_timeout | X. | ||
d_dbuserid | d_lock | X. | d_trabort | X. | |
d_dbver | d_makenew | d_tractive | X. | ||
d_decode_dba | X. | d_members | d_trbegin | X. | |
d_def_opt | d_off_opt | d_trdeletemark | X. | ||
d_delete | X. | d_on_opt | d_trend | X. | |
d_destroy | d_open | X. | d_trmark | X. | |
d_discon | X. | d_open_ptr | X. | d_trprecommit | |
d_disdel | d_opentask | X. | d_trrobegin | X. | |
d_encode_dba | d_pkeyfind | X. | d_trroend | X. | |
d_fillnew | X. | d_pkeynext | X. | d_trrollback | X. |
d_findco | X. | d_pkeyprev | d_wrcurr | ||
d_findfm | X. | d_rdcurr | |||
d_findlm | d_recfree |