flashpixx
Mitglieder-
Gesamte Inhalte
8302 -
Benutzer seit
-
Letzter Besuch
Inhaltstyp
Profile
Forum
Downloads
Kalender
Blogs
Shop
Alle Inhalte von flashpixx
-
mir ist schon klar was Transaktionen sind und wie sie funktionieren. Wo ist das Problem bezüglich der Transaktion? Wo ist auch hier das Problem bezüglich der Transaktion !? Der Server bekommt die Daten und startet die Transaktion, die Daten werden an die Clients gesendet und berechnet. Ein Client meldet einen Fehler, Server bricht Transaktion ab. Es wurden keine Daten geschrieben. Wenn jeder Client die Daten berechnet hat, es der Spezifikation entsprechend fehlerfrei ist, sendet er diesen Status an den Server, der Server teil nun jedem Client mit, dass er die Daten schreiben soll. Tritt ein Fehler auf, wird eben die gesamte Transaktion abgebrochen. Letztendlich ist das eine Transaktion, die aus 2 Teiltransaktion (Berechnung / Schreiben der Daten) besteht, sie ist atomar und die Daten müssen nur einmal transportiert werden, nachdem sie der Server erhalten hat, denn das Schreiben übernimmt der Client, der auch die Berechnung durchführt. Wenn der Server nachdem er die Daten erhalten hat, diese in eine temporäre Datenbankstruktur schreibt und den Clients mir mitteilt wie die Session lautet, dann kann jeder Client auf die Daten zugreifen und seine Berechnungen durchführen. Wenn die Clients fehlerfrei beendet haben, melden sie dies an den Serverprozess, der dann die temporäre Session per Datenbanktransaktion in die Tabellen der Datenbank schreibt. Wenn ein Fehler auftritt, dann wirft man die Session einfach weg und trennt die Verbindung zur Datenbank. Die Transaktion wurde somit nie durchgeführt. Ich sehe beim besten Willen keine Probleme bezüglich der Transaktionen, mir scheint nur, dass Du eben große Datenmengen durch entsprechende Java Strukturen weiter aufblähst. Bei einer Transaktion müssen zwar die Daten innerhalb des Contextes vorhanden sein, wie diese aber zwischen den Rechnern ausgetauscht werden, ist eine völlig andere Sache. Theoretisch kann ich auch Dateien zwischen den Systemen hin und her kopieren, z.B. via NFS, FTP und damit arbeiten. Ich würde nie an die Transaktion selbst die Daten hängen, das scheinst Du aber zu machen, sondern lediglich nur einen Link zu den Daten in der Transaktion mit geben. Wenn Du die Daten z.B. auf ein SAN / NAS legst, dann brauchst Du in der Transaktion nur den Link mit geben und je nach OS kannst Du es Dir sogar sparen, Daten die Du nicht verarbeitest selbst zu löschen, weil dass das System auf dem die Daten liegen von sich aus macht.
-
Wofür brauchst Du diese? Ich nehme mal ein Datensatz besteht aus mehreren Matrizen und die Bearbeitung ist dann abgeschlossen, wenn alle Matrizen verarbeitet wurden. Wenn ich nun einem Client eine Matrix zur Berechnung gebe, dann erhalte ich eine Antwort von diesem zurück, im Sinne eines Fehlers (Timeout, fertige Berechnung der Daten etc). Anhand der Antwort kann ich entscheiden, wie ich weiter arbeite, z.B. wenn der Client ein Timeout verursacht, dann kann ich die zu berechnende Matrix ggf an einen anderen Client geben. In analoger Weise könnte ich das Spiel rekursiv machen, d.h. ich zerlege die Matrizen noch einmal in Patches. Ich kann die Transaktionsmechanismen relativ lose halten und trotzdem gut skalieren. Da Du eh schon eine Abstraktion zwischen Client und Server hast, wäre evtl durchaus die Überlegung ob man den Server entsprechend verändert. Du hast nicht verstanden was der Object-Wrapper macht Ich werfe noch einmal das Stichwort Datenbanken in den Raum. Vor allem sollte man sich je nach Daten auch mal von einem realtionellen Datenbankmodell lösen und ggf NoSQL oder Graphdatenbank in Betracht ziehen. Gerade bei Deinem Schlagwort "Matrix" könnte man auch Repräsentation von Graphen im Computer denken, so dass man eine Graphdatenbank einsetzen kann. Du müsstest nur einmal konkret sagen, um welche Art von Daten es sich handelt.
-
Eine Middleware ist sicher immer eine Überlegung wert, aber durch die Middleware holt man sich immer einen gewissen Overhead hinzu. Evtl wäre hier die Überlegung, ohne Middleware zu arbeiten. Gerade wenn es hier um sehr große mehrdimensionale Datenmengen geht, würde ich davon abraten. Die Frage hier wäre, über welche Datenmengen reden wir und welche Art von Berechnungen finden statt. Evtl wäre auch eine P2P Lösung eine Möglichkeit. Was die Berechnung angeht, würde ich hier die Frage stellen, ob es überhaupt notwendig ist, dass ein Client immer eine komplette Matrix erhalten muss. Wenn man die Matrix von a nach b übertragen muss und dann immer mit der kompletten Matrix arbeitet, dann ist das recht ineffizient. Evtl wäre es sinnvoller den Algorithmus, der die Matrix verarbeitet an zu passen, so dass nur mit Patches (Blöcke) der Matrix gearbeitet werden muss. Somit kann die Matrix auf mehrere Clients verteilt werden und das Ergebnis muss dann nur später einmal zusammen gefügt werden. Das ganze als P2P ermöglich dann auch eine lose Kopplung. Ja, vor allem weil HDF ebenso Message Passing Interface unterstützt, somit kann man auf die Hyperslaps innerhalb des Formates von unterschiedlichen Prozesses schreib/lesend zugreifen. Was spielt das für eine Rolle? HDF wäre dafür geeignet die Daten strukturiert zu speichern. Der Datentransfer muss natürlich über ein anderes Protokoll statt finden. Wenn das der Fall ist, ist das letztendlich eine Kaskade von Webservices. Ich würde davon wirklich abraten, denn entweder kann man die einzelnen Clients via P2P lose koppeln, so dass die Clients letztendlich die Berechnung untereinander aushandeln. Ansonsten würde ich dann zu einem eher klassischen Ansatz gehen und einen Webservice nehmen, der die Daten entgegen nimmt und hinter dem Webservice einen HPC (Hochleistungsrechnen) erzeugen, den ich dann via MPI steuere. Wobei ich aber hier direkt sage, dass ich von einer Javaabasierten Lösung dann direkt absehen würde und die Berechnung direkt passend in C/C++ implementieren würde und über JNI an die Java Komponente anhängen würde (alternativ ginge auch dort sicherlich etwas anderes). Das stellt kein Problem dar, ich arbeite selbst mit Java, JNI und Boost C++ Libraries und kann dort habe ich keine Probleme große Datenmengen von Java in die entsprechenden C++ Strukturen zu portieren und dann dort zu verarbeiten. Bei große Datenmengen ja. Nein, wenn Du Deine Matrizen als Stringdaten repräsentierst, ist das wieder uneffizient, da z.B. Zahlendaten als Stringdaten umgewandelt werden müssen. Bei großen Datenmengen sollte man auf Stringverarbeitung verzichten. Z.B. ein int als 32 Bit typ benötigt 4 Byte, die Zahl als String 32565 schon mindestens 5 Byte. Je nach System auch 10 Byte wie bei Unicode. Wofür so etwas selbst entwickeln, Daten in eine HDF Datei speichern und diese via FTP übertragen. Man hat ein definiertes Datenformat und eine entsprechend performante Übertragung.
-
Da wäre dann die Frage, ob man direkt RMI verwendet. Problematisch wäre dieses, wenn man außerhalb des Subnet kommunizieren will, denn dafür muss man dann entsprechend die Ports dann weiterleiten bzw. ACLs der Router / Firewall anpassen. RMI ist zunächst auch nicht geschützt, d.h. die Daten innerhalb der Objekte gehen unverschlüsselt über das Netz. Wenn man "nur" die Daten übertragen muss, dann wäre die Datenbank das sinnvollste + ein Proxy Objekt. Ggf könntest Du noch einen "klassisches" Webservice nehmen, da Du hier die Daten über "Standardports" überträgst, die Datenbank nur von dem Rechner, der den Webservice bereit stellt zugänglich sein muss und Du verschlüsselt (https) kommunizieren kannst. Wenn DU das dann via WSDL beschreibst, kannst Du direkt die Proxyobjekte erzeugen
-
MySQL Probleme "Can't connect to MySQL Server" on IP Fehler 10060
flashpixx antwortete auf perseus's Thema in Datenbanken
Wenn es "nur" darum geht Speicherplatz, PHP und mySQL zu benutzen, da gibt es doch schon genügend Angebote, vor allem musst Du Dich dann nicht mit der Konfiguration rum ärgern. Es geht darum, dass man sich bevor man Dienste für das Netz öffnet, sich Gedanken über Sicherheitsaspekte macht. Mal schnell einen Dienst an alle Interfaces zu binden und darauf zu hoffen, dass nichts passiert ist fahrlässig. Anscheinend nicht, denn sonst würdest Du ja an den Dämon heran kommen. Tutorials setzen in den meisten Fällen in dem entsprechenden Bereich Wissen voraus. Anfängertutorials gibt es natürlich auch, aber wenn man einen Dienst auf einem Produktivsystem laufen hat und man Anfängertutorials benötigt, dann würde ich ganz schnell davon abraten diesen Server zu betreiben. Ich denke das hier trifft es sehr gut Dein neuer Linux-Server » d(a)emonkeeper's purgatory Dir scheint nicht bewusst zu sein, was Du dort tust. Soweit ich die Einstellung aus Deinem Post richtig deute, bedeutet das, dass der mySQL Dämon an alle Interfaces gebunden ist, d.h. sofern keine anderen Beschränkungen im Rechner existieren ist er auf allen Interfaces erreichbar. Womit ich eben auf die von mir oben genannten Punkte verweise, dass man vorher überlegen sollte, wie man das System konfiguriert. Denn wie auch etreu geschrieben hat, bindet man solche Dienste eben nur auf bestimmte Interfaces. Da Du mit einer VPN Lösung arbeitest, die Du hier nicht näher nennst, verweise ich einmal auf TUN/TAP denn es ist entscheidend, ob die Interfaces persistent sind oder nicht, denn Dienste kann man eben "nur" an persistente Interfaces binden. Diese Punkte solltest Du aber als Administrator kennen, damit Du Fehler und Lücken in Deinen System erkennen und beheben kannst. -
MySQL Probleme "Can't connect to MySQL Server" on IP Fehler 10060
flashpixx antwortete auf perseus's Thema in Datenbanken
Du solltest, wenn Du einen Server betreibst, die Grundlagen der Netzwerktechnik / -dienste beherrschen. Dienste, die nicht sicher konfiguriert wurden, bieten die Möglichkeit zum Einbruch in den Server. Weiterhin kenne ich weder das von Dir installierte System, noch dessen Konfiguration, so dass ich keine konkreten Konfigurationsvorschläge machen werde. Ich hoffe, dass auf dem Server im Netz kein XAMPP läuft, denn wie auf der Projektseite zu lesen ist, ist XAMPP nicht für den Produktiveinsatz gedacht Ein Forward benötigt man nicht, wenn man den Dienst richtig (!) konfiguriert. Dein Problem ist nicht mySQL spezifisch, sondern es hat mir der Grundfunktionalität von Diensten und Netzwerken zu tun, diese solltest Du beherrschen, wenn Du einen Server betreibst, andernfalls solltest Du den Server von jemanden installieren lassen, der dieses Wissen hat, denn Du handelst fahrlässig. Wie schon geschrieben: Prüfe an welche Interfaces / IPs der mySQL Dämon gebunden ist und sorge dafür, dass er von Deinem VPN Interface erreichbar ist. -
MySQL Probleme "Can't connect to MySQL Server" on IP Fehler 10060
flashpixx antwortete auf perseus's Thema in Datenbanken
Und was hat das mit der Problemstellung zu tun? Es geht hier um einen Server, auf den via VPN verbunden und der mySQL Dämon nicht erreicht wird. Außerdem impliziert Deine Aussage direkt wieder die Frage in meinem ersten Posting: An welche(s) Interface(s) ist der mySQL Domän gebunden? Ich verweise auch einmal auf die mySQL Dokumentation bezüglich Socket-, TCP- und NamePipe-Connections. Zusätzlich, wenn geklärt ist, wie und woran der Dämon gebunden ist, wäre die nächste Frage, ob der Dämon überhaupt von außen erreicht werden kann (steht auch in der Dokumentation). -
MySQL Probleme "Can't connect to MySQL Server" on IP Fehler 10060
flashpixx antwortete auf perseus's Thema in Datenbanken
Warum nimmst Du nicht die original mySQL Dokumentation für ein Zitat MySQL :: MySQL 5.5 Reference Manual :: C.5.2.2 Can't connect to [local] MySQL server was durchaus sinnvoller ist und in dem Link, der auf Deiner angegebenen Seite auf die mySQL Dokumentation verweist, ist bezüglich der Authentifizierung nichts gesagt -
Schau Dir das HDF Format an, neben numerischen Daten können auch andere Datentypen gespeichert werden bzw. es können Metadaten hinterlegt werden
-
MySQL Probleme "Can't connect to MySQL Server" on IP Fehler 10060
flashpixx antwortete auf perseus's Thema in Datenbanken
Die Meldung "can't connect" sagt schon aus, dass der Dienst nicht erreicht werden kann. Dieser Vorschlag ist somit völlig sinnlos, denn damit der Dienst überhaupt erst prüfen kann, ob der User sich anmelden darf, geschieht nachdem eine Verbindung auf TCP Ebene zu Stande gekommen ist. Das erste was man prüft, an welches Interface / IP der Dienst gebunden ist und ob er erreichbar ist. -
MySQL Probleme "Can't connect to MySQL Server" on IP Fehler 10060
flashpixx antwortete auf perseus's Thema in Datenbanken
Also http wird bei mySQL nicht funktionieren. An welche Interfaces ist der mySQL Dämon gebunden? -
Also den Sinn sehe ich darin nicht, denn die Absicherung erfolgt durch die Authentifizierung des Users und entsprechende Gruppen, Freigeben- und Verzeichnisberechtigungen. Wenn entsprechend mehr Schutz benötigt wird, dann eben entsprechend verschlüsseln und den Zugang über entsprechende Schlüssel realisieren.
-
Ubuntu: Maximale 100MBit oder 1GB-Netzwerkkarte installiert? Wie herausfinden
flashpixx antwortete auf mkScheller's Thema in Netzwerke
lspci liefert Dir nur die Informationen was für ein Chip verwendet wird, wie die Karte real angebunden ist, ist abhängig vom Kabel & Switch (http://de.wikipedia.org/wiki/Duplex_(Nachrichtentechnik)) und man kann diese Daten via Ubuntu Manpage: ethtool - Display or change ethernet card settings abfragen -
Dann erkläre mir mal, wo durch ein zusätzliches Passwort ein erhöhter Schutz entsteht? Selbst wenn ich das Passwort noch mal erfrage, die Daten werden eh anhand der SID des Users zugeordnet und diese ist nach der Authentifizierung eh vorhanden. Also noch einmal eine Passworteingabe erzwingen, erhöht nicht die Sicherheit. Eine Sicherheitserhöhung hast Du, wenn die Daten von der Freigabe in einen verschlüsselten Container wandern und dann kannst Du eben erzwingen, dass der Container nur nach Eingabe des Passwortes geöffnet wird und selbst diese Eingabe kann man so gestallten, dass der Container nach einer gewissen Zeit geschlossen wird und der User dann eben beim erneuten Zugriff das Passwort eingeben muss (oder Eingabe via Dongle, Key, Zertifikat, Smartcard etc). TrueCrypt bietet das entsprechend für Netzwerkfreigaben an http://www.truecrypt.org/docs/?s=system-favorites
-
Wo ist denn überhaupt das Problem !? Wenn die Rechner eh in einer Domäne sind, dann verbinden sich die Laufwerke beim Login doch eh, d.h. ich brauche da überhaupt keine Passworteingabe, denn ich authentifiziere mich beim Login und bekomme alle Laufwerke, die für mich als User hinterlegt sind, direkt verbunden. Sollen nun 2 User nun ein bestimmtes Laufwerk bekommen, dann erzeuge ich die Freigabe auf dem Server mit entsprechenden Berechtigungen, lege eine Gruppe für diese zwei User an, in die ich die User aufnehme und prüfe beim Login, ob der User zugehörig zu der Gruppe ist, wenn ja verbinde ich das Laufwerk.
-
JMS ist auch "nur" XML und für n-dimensionale Daten ist XML nicht geeignet, da es eine Baumstruktur ist. Zusätzlich kann man bei n-dimensionalen Strukturen durchaus überlegen, ob man evtl durch sinnvolle Skalierung sparse Strukturen verwendet, dadurch wird der Speicherplatz deutlich geringer. Bei Deinen Arrays hast Du keine sparse Strukturen, d.h. Du wirst hier eine Menge an Daten mitschleppen, die Du real nicht brauchst.
-
In PHP von allen Seiten auf die selbe "Methode" zugreifen?
flashpixx antwortete auf Meri19's Thema in Skript- und Webserverprogrammierung
dafür gibt es PHP: Autoloading - Manual um das ganze definiert zu machen Ein Include / Require irgendwo im Quellcode wird immer im lokalen Context (Scope) aufgerufen, wenn in dem includierten Code keine funktionale oder OOP Kapselung existiert, dann können ohne Probleme Variablen etc überschrieben werden, durch die nicht-typisierte Typenbindung in PHP können dadurch sehr unschöne Sideeffects entstehen, die den Code und vor allem die Fehlersuche extrem unübersichtlich machen. Wenn man eh eine funktionale oder OOP Kapselung hat, dann kann ich das includieren auch am Anfang der Datei machen, da ich die Routinen eh über die entsprechenden Namen aufrufe und wenn ich das flexibel halten will, dann definiere ich einmal das Autoloading, wobei ich da auch dann ganz sauber mit Hilfe von Exception Ladefehler der Dateien abfangen kann. Wo ist das Argument um irgendwo mitten im Code ein include zu setzen? Es geht nicht darum, dass man es machen kann, sondern darum, den Code ordentlich zu strukturieren, so dass auch auch wartbar bleibt. Außerdem sehe ich keinen Grund, dass man die includes Mitten im Code machen muss, sie können alle zu Beginn an definierter Stelle gemacht werden oder eben dynamisch via Autoload, aber diese Funktion kann ich ebenfalls in eine eigene Datei auslagern (da sie ja auch im Root Namespace liegen muss) und dann setze ich den include am Anfang meiner Datei. Für mich ist ein include irgendwo im Code definitiv schlechter Stil -
Ich hatte ein ähnliches Problem: JMS & XML haben durchaus für große Datenmengen entsprechenden Overhead. Entweder nutzt Du eine Datenbank und hängst Dich per JDBC einfach vom Client und Server dran. Je nach Datentypen und Struktur wäre auch Hierarchical Data Format etwas zum überdenken. Ich habe, da ich 2D Matrizen vom Type byte hatte, diese in das HDF gepackt, was ich dann in der Datenbank als BLOB abgelegt hatte. Die Frage ist, brauchst Du zwingend Java Objekte oder würde es sich anbieten nur die Daten zu transferieren und die Objekte dann zu erzeugen
-
In PHP von allen Seiten auf die selbe "Methode" zugreifen?
flashpixx antwortete auf Meri19's Thema in Skript- und Webserverprogrammierung
Nein man kann mit entsprechenden Paradigmen alle includes zu Beginn des Scriptes machen und somit das ganze übersichtlich gestalten. Einfach im Code ein include zu setzen braucht man nicht. Ich empfehle OOP Design mit Namespaces -
In PHP von allen Seiten auf die selbe "Methode" zugreifen?
flashpixx antwortete auf Meri19's Thema in Skript- und Webserverprogrammierung
Überdenke einmal Dein Design, denn einfach irgendwo wild Daten zu includieren ist sicherlich nicht sinnvoll -
Schau mal in Online Analytical Processing rein, dort wird immer von so genannten Hypercubs gesprochen: Stell Dir eine Tabelle in einer Datenbank einmal vor, da hast Du eine 2-dimensionale Matrix (Zeilen & Spalten). Bei OLAP macht man eben keine 2D Struktur, sondern man geht im besten Fall in n-dimensionale. Am Beispiel der Tabelle, Du stellst auf Deine Tabelle eine weitere Tabelle "drauf", also baust auf eine Tabelle (Fläche) eben mehre Seiten drauf, so dass sich ein Würfel ergibt. Dieses Spiel treibt man eben nun so lange, bis man die gewünschte Tiefe für eine Auswertung hat, was letztendlich n-dimensional sein kann und dann als Hypercube bezeichnet wird. Die interessante Frage dabei ist, wie schnell kann man solche n-dimensionalen Strukturen auswerten und was bringen sie einem für Vorteile gegenüber klassischen Tabellen.
-
Den Quellcode den Du postest benutzt keine standardisierten Klassen / Pakete, somit ist das alles irgendwie individuell entwickelt. Und wenn Du weisst wofür der Classpath gedacht ist, was hätte es Dich daran gehindert nach zu schauen, ob die von Dir verwendeten Klassen vorhanden sind
-
Klassenpfad bitte fange erst einmal damit an, dass Du verstehst wie Java Klassen / Pakete etc strukturiert und instantiiert, ebenso was Klassen und was Objekte sind.
-
Für so etwas gibt es regelmäßige Backups, nimm Dein letztes Backup der Datenbank und nutze dieses