Hoi RGJ,
Gisteren weer een ingeving gekregen hoe ik ‘het beste’ kan gaan structureren. Ik ga gewoon een query tabel maken met o.a. de volgende velden:
query blob NOT NULL default ‘’,
queryresult blob NOT NULL default ‘’,
In query zet je de mysql query en het resultaat van de query zet je in queryresult blob veld. In een apart programma kan ik gemakkelijk blob techniek gaan testen.
M.i. zijn er twee mogelijkheden om een query/queryresult naar een andere peer te krijgen. Eerste methode is m.i. de gnunet techniek. Hak de queryresult in blokken en ga deze blokken naar de andere peer sturen. De andere techniek is m.i. het over te zenden als een ‘file’. Bijvoorbeeld met http://www.codeproject.com/internet/udt.asp . Je zet hierbij een UDP poort open op verzendende peer. De ontvangende peer gaat via UDP naar verzendende peer en haalt de file op. De UDP packets komen op deze manier niet in MySQL terecht. Stel dat een andere peer gelijktijdig ook iets op gaat halen op zelfde UDP port dan kom je m.i. snel weer in gnunet variant terecht. Hoe het precies gaat worden weet ik nog niet. Gewoon testen hoe verschillende andere projecten het hebben gedaan. Beste methode overnemen.
Denk om een aparte database te maken namelijk ‘foonsearch2006’. Ben bezig om de tabellen te updaten. Zie ook bijlage.
RGJ, In mijn gedachte ben ik nog opzoek naar wat de scope van foonsearch2006 zou moeten worden. Moet je filesystem en cd’s hashes er wel of niet onder laten vallen? Momenteel denk ik om alleen onderstaande tabellen er onder te laten vallen, dus de rest onder andere database namen laten vallen. CD hashen/opzoeken is dan een soort applicatie op/naast het framework.
De vriendelijke groet Jan Marco
Bijlage foonsearch2006 SQL contouren:
CREATE TABLE query(
.
.
query blob NOT NULL default ‘’,
queryresult blob NOT NULL default ‘’,
//hierin de queries opslaan en het resultaat van de query. Met gridcontrol (“excel achtige werkblad”) kan je m.i. makkelijk de query op scherm toveren. Als je op blob veld klikt dan een docking scherm open waarin je een nieuwe gridcontrol scherm opstart. Hierin kan je makkelijk de outputrecords tonen.
);
CREATE TABLE metaquery(
//alle queries uit query tabel halen en dan mogelijk meer queries in opslaan als je werkelijk hebt uitgevoerd, want die staan in de query tabel. N.B. Database Foondump2005 heeft bepaalde SQL structuur. Een soort geautoriseerde querys gaan maken. Je zorgt op deze wijze ervoor dat je dezelfde SQL structuur hebt en dat de SQL query’s die je dan ontvangt op deze database ook goed werken. Funprice en andere bedrijven definiëren hun structuur die je gemakkelijk zou moeten kunnen ophalen/verifiëren. De structuur die funprice gebruikt haal je dan bij hun server op.
);
CREATE TABLE receive(
//ik heb messagepack tabel gerenamed naar receive. In receive komen de messages packs binnen.
);
CREATE TABLE send(
De tegenhanger van receive is de send tabel. Hierin staan de messagepacks die verzonden moeten worden naar de andere peers. Gewoon een aparte tread maken die op prio/urgentie de messages packets gaat verzenden. De verstuur thread maakt de vertaling met welk protocol (UDP, TCP, etc) verzonden moet gaan worden.
);
CREATE TABLE queryblock(
//uit receive de queryblocks halen en in deze tabel zetten. Als je alle queryblokken hebt ontvangen dan kan je een query/queryresult in de query tabel gaan zetten.
);
CREATE TABLE ping(
//De receive verwerkingsthread zet alle pings in deze tabel.
);
CREATE TABLE pingIP(
//Met een aparte thread alle distinct ipnummers gaan checken of host ook te pingen is. Code voor zo’n ping procedure heb ik al.
);
CREATE TABLE pong(
// De receive verwerkingsthread zet alle pongs in deze tabel. Je stuurt eerst een ping naar een onbekende peer. Je krijgt in deze tabel een pong terug, hierop kan je een Helo naar de onbekende peer sturen om je bekend te maken. Je maakt met de Helo eigenlijk je eigen foondump entry bekend aan de onbekende peer.
);
CREATE TABLE helo(
//Hierin staan alle ontvangen helo berichten van andere peers. Een helo is een bericht om je bekend te maken aan andere peers. Door SQL te gebruiken kan je miljoenen Helo(s) opslaan. Eigenlijk is de Helo een foondump entry. Ik laat de Helo structuur nog even ongewijzigd want ik wil het huidige foonsearchd programma gaan testen in het gnunetd netwerk. Als ik ‘zenden van packets” ga aanzetten gaat het beter in het huidige gnunetd netwerk functioneren. Je kan dan gaan testen of het werkt zonder dat er veel functionaliteit in zit. Alleen Helo, Ping, Pong gaan werken in het gnunetd netwerk.
);
CREATE TABLE log (
//hierin alle log zetten.
);
CREATE TABLE config(
// de configuratie gegevens staan in deze tabel.
);
CREATE TABLE secretkey(
// de secret keys worden in deze tabel opgeslagen. Mogelijk in de toekomst in een andere database onderbrengen om betere beveiliging te realiseren. Mijn eerste doel is om encryptie te gaan testen. In later instantie meer naar beveilingsconcepten gaan kijken.
);
CREATE TABLE status (
// in deze tabel wordt het aantal ontvangen/verzonden bytes opgeslagen.
);
CREATE TABLE config_description(
// een beschrijving van een configuratie parameter wordt in de deze tabel gegeven. Als je een taal attribuut opneemt kan je gemakkelijk van taal omschakelen zonder de bron code te hoeven hercompileren.
);