| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: BlackBoard unter 2004 langsamer und Daten-Container (437 mal gelesen)
|
Dabrunz Mitglied
Beiträge: 127 Registriert: 28.05.2003
|
erstellt am: 05. Jun. 2003 09:01 <-- editieren / zitieren --> Unities abgeben:
Tag zusammen. In meinen Programmen nutzte ich in den AutoCAD2k*-Versionen vor 2004 eigendl. immer das BlackBoard zur Datei übergreifenden Datenhaltung. Zum Teil - und der Anteil ist nicht unerheblich - diente es mir auch als eine Art Datei-Cache: Daten lesen -> konvertieren -> ins BlackBoard. Ziemlich effektiv war's, aber damit scheint Schluss zu sein, denn die Zugriffe auf diesen Namensraum scheinen mir um so vieles langesamer geworden, dass - gerade bei größeren Datenmengen - der Ansatz zum Scheitern verurteilt scheint. Meine Fragen sind jetzt: - Hat hier noch jemand anderes diese Beobachtung gemacht? - Was habt ihr für eine Meinung zur Implementierung eines quasi-separaten und globalen Daten-Containers, der nicht Zeichnungs übergreifend ist? - Wie würdet ihr das angehen? - Welche Kontroll- und Verwaltungs-Methoden sollten da implementiert werden? Ich habe bisher kein befriedigendes Konzept gefunden. Vielleicht haben wir ja zusammen eine brauchbare Idee .. Achim Dabrunz Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
marc.scherer Ehrenmitglied V.I.P. h.c. CAD-Administrator
Beiträge: 2490 Registriert: 02.11.2001 Windows 10 64bit AutoCAD Architecture 2018/2019 (deu/eng) AEC-Collection 2019 (Revit und Zeugs) Wenn sich's nicht vermeiden läßt: D-A-CH Erweiterung (mies implementierter Schrott)
|
erstellt am: 13. Jun. 2003 11:29 <-- editieren / zitieren --> Unities abgeben: Nur für Dabrunz
Hi Achim, *null-check* was meinst Du denn mit: "Implementierung eines quasi-separaten und globalen Daten-Containers, der nicht Zeichnungs übergreifend ist" Was ist er denn nu? global oder NICHT Zeichnungsübergreifend? Was hältst Du von 'ner ini-Datei? (Ich hab' da geade was zum lesen und schreiben in Lisp gebaut...
------------------ Ciao, Marc Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dabrunz Mitglied
Beiträge: 127 Registriert: 28.05.2003
|
erstellt am: 13. Jun. 2003 13:14 <-- editieren / zitieren --> Unities abgeben:
Hi. Sieht nach meiner Standard-Schwäche aus: Ich hab' nicht konkret genug beschrieben, was ich eigendlich machen will und warum. Aber der Reihe nach: Zitat: Was hältst Du von 'ner ini-Datei?
Wenig, denn ich will ja gerade einen Datei-Cache implementieren. Voreinstellungen für Dialoge oder Benutzer-Eingaben, Programm-Einstellungen und Applikations-relevante Daten liegen ja immer in haufenweise Dateien herum - ist zumindest bei mir so. Werden die Daten jetzt beim Initialisieren des Programms aufbereitet, dann würde ich diese Ergebnis gerne im Speicher halten, denn die Daten werden durchaus häufiger abgefragt. Wichtig scheint mir auch, darauf hinzuweisen, dass es natürlich keinen Sinn macht Daten zu cachen, wenn sie nur von einem Befehl oder einer Routine benutzt werden. Mir geht's hier um Applikationen, bei denen der Anwender hin und wieder mal einen AutoCAD-Befehl aufruft, aber in der Regel mit dem Befehlen der Applikation selbst arbeitet. Bisher arbeiteten meine Programme nach folgendem Muster: Code:
(1) Check: Alle benötigten Daten schon im BlackBoard? JA -> freuen NO -> aus Dateien zusammensuchen, aufbereiten und in BB schreiben (2) Befehl ausführen - bei Bedarf Daten aus BB holen
Die Vorteilen lagen für mich auf der Hand:
- Datei-Inhalte müssen nur einmal pro ACAD-Session auf Korrektheit geprüft werden
- Datei-Inhalte müssen nur einmal pro ACAD-Session in Programm-DatenStrukturen übersetzt werden
- keine überflüssigen Datei-Zugriffe mehr - gerade bei zentral im Netz abgelegten Konfigurations-Dateien oder DatenBank-Zugriffen sinnvoll
Wegen akuter Langsamkeit - hier auch die Frage, ob's auch sonst noch jemand beobachtet hat - fällt aber das BB für größere Tabellen unter 2004 flach. Also speiche ich jetzt innerhalb eines Zwischenschritts meine Daten zusätzlich im DocumentNameSpace, d.h. ich benutze globale Variablen, die auch nach Abschluss des Befehls erhalten lesbar bleiben, damit zumindest ein Teil der Vorteile von voher erhalten bleibt. Zitat: Was ist er denn nu? global oder NICHT Zeichnungsübergreifend?
Das - hoffe ich - klärt sich nun auch: Beides, nennen wir's mal Super-Globals. Und genau darum geht es mir! Ich würde gerne ein - zumindest von den an der Diskussion und Entwicklung Beteiligten - akzeptiertes Konzept für diese Super-Globals entwerfen und anschließend ein Verwaltungs- und Abfrage-Modul fertig stellen, mit dem über eine Hand voll Funktionen der Zugriff auf diese Daten ermöglicht wird. Wie sieht's aus? Jemand Interesse? Oder hab' ich wieder zu fabulös 'rumgelabert? Achim Dabrunz Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4171 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 13. Jun. 2003 13:41 <-- editieren / zitieren --> Unities abgeben: Nur für Dabrunz
Hallo Achim, prinzipiell ist das sicher interessant, ich arbeite in solchen Fällen auch nur mit globalen Variablen, mit dem Nachteil, dass diese für jede Zeichnung neu gebastelt werden müssen. Mir fällt allerdings keine Lösung ein, wie man das anders machen sollte, als eben über das BB. Nur die INI-Lösung von Marc wäre dann interessant, wobei dann zusätzliche Prüfroutinen rein müßten, ob die Datei nun aktuell ist, oder eben nicht. Alles ziemlich aufwendig. Zusammengefasst heißt das: Interesse ja, aber mir fehlt im Moment einfach der Ansatz einer sinnvollen Lösung. Vielleicht hast du ja was? Grüße Holger ------------------ Holger Brischke CADlon - Lisp over night! 4 Neue Tool's im FreeDownload(gesamt 33)!? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Konstrukteur Technischer Systemplaner BIM (m/w/d) | Von Industriebetrieb, Forschungszentrum, Krankenhaus, Büroimmobilie und Hochschule bis zur Elbphilharmonie oder Antarktisstation: Unsere über 300 Ingenieure sorgen für zukunftsweisende Energiesysteme, modernste gebäudetechnische Anlagen und innovative Gebäudedigitalisierung! Im Geschäftsfeld Engineering erarbeiten unsere Ingenieurteams modernste Designlösungen für Energie- und Gebäudetechnik in allen relevanten Branchen und Institutionen.... | Anzeige ansehen | Elektrotechnik, Elektronik |
|
Dabrunz Mitglied
Beiträge: 127 Registriert: 28.05.2003
|
erstellt am: 27. Jun. 2003 18:22 <-- editieren / zitieren --> Unities abgeben:
OK - nach einigen Tagen Abstinenz ganz kurz meinen Hauch einer Idee: (0) Das Ding braucht einen Namen - ich nenn's IOCache (1) Zumindest eine globale Variable werden wir brauchen, die alle Daten in Form eines Assoziations-Baums (kurz: AssocTree) bereit hält. Vorteil: Alle wesendlichen Basis-Funktionen für Daten-Zugriff und -Manipulations gibt's schon. (2) Wir brauchen ein Kennzeichen, mit dem Zeichnungen innerhalb der gleichen AutoCAD-Session zur Synkronisation der der Daten gezwungen werden, wenn aus einer Zeichnung heraus eine Änderung erfolgt. (2.1) Wir brauchen eine Kopie der Daten im BlackBoard-Namensraum, von dem aus die Synkronisation erfolgen kann, weil's der einzige Speicherplatz innerhalb einer AutoCAD-Session ist, auf den alle Zeichnungs-Namensräume zugreifen können. (2.2) Alle Zugriffs- und Manipulations-Funktionen sollten in er Lage sein, zu prüfen, ob die DatenBasis synkronisiert werden muss und im Ideal das auch bei jedem Aufruf tun. (3) Jede Applikation sollte unterscheiden können, welche Daten Ihr gehören und wenn's nicht die Programm-Logik erfordert die Finger von Teilen des AssocTrees lassen, die sie nix angehen. (Vielleicht sollten Applikationen ihre Zugriffs-Logik ebenfalls zur Verfügung stellen - aber wie??) (4) Wesendliche Funktionen (unvollständig):
- (IOCache-get <Application> <AssocTreePfad> )
- (IOCache-set! <Application> <AssocTreePfad> <Wert> )
- (IOCache-sync? <Application> )
- (IOCache-sync! <Application> <toBlackBoard?> )
- (IOCache-setSyncMark! <Application> )
- (IOCache-removeSyncMark! <Application> )
- (IOCache-clear! <Application> )
Was fehlt noch? Oder ist's anders vorstellbar? Achim Dabrunz [Diese Nachricht wurde von Dabrunz am 30. Juni 2003 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|