This page (revision-7) was last changed on 15-Mar-2010 22:41 by Peter Hormanns 

This page was created on 10-Mar-2010 00:34 by JensKapitza

Only authorized users are allowed to rename pages.

Only authorized users are allowed to delete pages.

Page revision history

Version Date Modified Size Author Changes ... Change note
7 15-Mar-2010 22:41 8 KB Peter Hormanns to previous Aua
6 13-Mar-2010 16:57 8 KB JensKapitza to previous | to last weitere informationen
5 13-Mar-2010 16:53 7 KB JensKapitza to previous | to last weitere informationen
4 13-Mar-2010 15:29 7 KB JensKapitza to previous | to last some more description
3 11-Mar-2010 23:26 6 KB JensKapitza to previous | to last ein wenig weiter machen (alles beta hier ^^)
2 11-Mar-2010 10:52 4 KB ThomasBayen to previous | to last Kommentare von Thomas Bayen
1 10-Mar-2010 00:34 916 bytes JensKapitza to last Denkansatz

Page References

Incoming links Outgoing links

Version management

Difference between version and

Ziel: Informationen ähnlich wie in einem Peer2Peer System abzulegen.


Anfang mit einem kleinem Dummy-System welches die Fortune Daten sammelt und in eine eigene Datenbank speichert. Diese sollte aber dann auch schon vorsehen, Informationen zu verlinkten anderen Objekten zu liefern.

{{{
Cite: { *ID, author, content, date }
CrossRef: { *REF, objectid }
Categories: { *ID, name }
reference:  {*ID, *REF, type }
categorie: { *CITE_ID, *CATEGORIE_ID }
}}}


== Kommunikation/Protokolle ==

Ein HTTP basiertes Protokoll.
{{{
PROTOCOL/VERSION PARAMETERS
HEADERS
\n
DATA
}}}


=== Schichten ===

# Provider/Network (e.g. ~ServerSocket)
# Protocol (e.g. HTTP)
# Service routing (e.g. forward the request to the right peer.)
# Session (should use a token to allow switching protocol and application with no session lost)
# Handler (each Service/request will be registrated and handelt.)



== Kommentare ==

Habe die Seite gerade gesehen und wollte auch mal meinen Senf dazugeben. :-) Leider habe ich nicht so richtig verstanden, wozu Du das benötigst, vielleicht schreibst Du das noch etwas konkreter. Also erstmal eine Bemerkung zu dem Anwendungsszenario, wie ich das aus Deinem Text herauslese: Du willst eine Fortune-Datenbank über das ganze Internet verteilen. Bei normalem Peer2Peer geht es nach meinem Verständnis darum, daß man sehr große Dateien hat, die dann durch einen Hashkey identifiziert werden. Es gibt zentrale Server (ich bin kein wirklicher p2p-Freak, also berichtige mich) bzw. andere Verteilungsmechanismen, durch die ich an eine Liste komme, die die verfügbaren Hashes enthält. In jeder Zeile steht dann dazu noch einer Beschreibung der Datei wie z.B. ein Dateiname.

Wenn ich Dich richtig verstanden habe, willst Du keine Fortune-Dateien austauschen, sondern einzelne Zitate. Um das p2p-System umzusetzen, benötigst Du also eine Indexdatei, in der ein Hash für jeden Datensatz steht. Wenn Du in den Daten suchen willst (was ja der Sinn einer Datenbank ist) musst Du in der Indexdatei immer einen Hash sowie einen Suchschlüssel stehen haben. Da die Zitat-Einträge sehr kurz sind (im Vergleich zu einer Videodatei), dürfte jedoch die Indexdatei nur unwesentlich kleiner als die gesamte Datenbank sein, was das ganze sehr uneffektiv macht.

Alternativ würde man es eben nicht wie bei p2p mit einer überall verfügbaren Indexdatei machen, sondern die Abfrage durchs Netz jagen und die Ergebnisse jeweils weiterreichen oder einsammeln. Da stellt sich die Frage nach einem Timeout oder auch die Frage, ob man eine Vorabfrage startet, die die Daten schonmal vorsammelt, auf daß man dann erst später das Ergebnis abholt, wenn das Netz Zeit gehabt hat, die Lösung zu suchen. -- ThomasBayen



Jetzt mal zu einem anderen Anwendungsszenario, über das ich mir schon seit ein paar Monaten den Kopf zermartere: Ich habe in meinem Unternehmen verschiedene Quellen von Telefonnummern, die alle Ihre eigenen Daten haben. Manche dieser Quellen sind immer verfügbar, andere nicht (Handys). Manche sollten miteinander synchronisiert werden, andere nicht. Schön wäre es, wenn es ein System gäbe, diese Daten dennoch zu durchsuchen und eine Ausgabe zu erhalten, mit der man was anfangen kann. Dabei sollte am besten auch die Quelle der Daten angegeben werden können. Sagen wir mal so:

 SELECT name, nummer, datasource FROM telefonbuch WHERE name LIKE 'Schmitz'

Ergebnis:

 Karl Schmitz       12345       Warenwirtschaft
 Hubert Schmitz     4711        Warenwirtschaft
 Schmitz & Backes   454554      Warenwirtschaft
 Hilde Schmitz      2435234     Telefonbuch von Krefeld
 Karl Schmitz       12345       Maemo-Handy Thomas Bayen
 Karl Schmitz       12345       MySQL-Datenbank Telefonnummernliste
 Hubert Schmitz     4711        Backup Handy Außendienstler 1

Ist es sowas, was Dir da vorschwebt?!? -- ThomasBayen



Noch eine allgemeine Anmerkung: Eine interessante Frage ist die nach der Anwendungs-API. Da bietet sich aus Anwendersicht natürlich SQL an, aber das will ja keiner selber implementieren. Bei MySQL kann man die Database-Engine austauschen. Sowas wäre natürlich die aller-eleganteste Lösung, weil es den kompletten Befehlsumfang von MySQL erlauben würde. (geht aber wohl nur in C). Gibt es eine Java-Datenbank (HSQLDB oder Derby oder so), die sowas erlaubt? Oder möchtest Du für Deine Anwendung gar kein SQL? -- ThomasBayen