Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: Werking mysqlserver/mysqld  (gelezen 1287 keer)

Offline JV.com

  • Lid
Werking mysqlserver/mysqld
« Gepost op: 2010/09/30, 22:25:37 »
Hallo Iedereen,

Ik ben voor de aardigheid aan het proberen (nadruk op proberen*) een classe aan het maken die bij in staat stelt om
zo op zo basic mogelijke manier, in mijn C++ applicaties, een connectie te kunnen maken met mijn mysqlserver (eerst local) en ook queries kunnen uitvoeren en dit terug kunnen lezen.

Nu kom ik niet vragen hoe ik dit het beste kan doen, maar wil graag mijn visie van wat ik geleerd heb delen en kijken als het klopt met jullie ideen/ervaring.

Om communicatie/connectie tot stand te kunnen brengen moet ik gebruik zien te maken van de mysqld daemon. dit is de toegang tot de mysqlserver. de mysqld deamon accepteert een aantal argumenten waardoor (we nemen nu even aan dat deze allemaal correct zijn) er een nieuwe thread(connectie) gestart wordt. Bron: http://forge.mysql.com/wiki/MySQL_Internals_Guided_Tour#The_Skeleton_Of_The_Server_Code (zie: The Skeleton Of The Server Code)

Samenvatting basisstappen.

* mysqlserver wordt gestart.
* De basis componenten worden geintialiseerd.
* Er wordt een server thread gecreerd die luistert constant voor input.
* Wanneer input ondekt wordt wordt er een client thread gecreerd, met specifieke waardes die uniek zijn voor deze thread/connectie.
* De connectie heeft een commando parameter(s) mee gekregen deze wordt uitgevoerd, en zolang er een er commandos zijn om uit te voeren blijft de thread/connectie bestaan. zijn alle commandos afgewerkt dan wordt de thread/connectie gesloten. en is de cirkel rond.

Nu is mijn vraag:

Men kan op 2 manieren communiceren met de mysqlserver.
1. localhost.
2. via netwerk.

Nu denk ik (wil ik graag weten als dit juist is) dat de mysql daemon op te delen valt in 2 delen. (sterke aanwijzingen heb ik hier niet voor maar lijkt nu vanuit mijn kennis logisch)

1. een manier om te communiceren wanneer men zich localhost bevind.
2. een manier om te communiceren wanneer men zich via het netwerk wil laten connecten.

dit denk ik omdat de mysql daemon moet luisteren op een bepaalde poort voor input(wanneer men zich aanmeldt via het netwerk). wanneer men zich lokaal bevind kan de mysql deamon direct worden aangesproken.

OF

gaat lokale communicatie met ook via de zelfde poort waar de deamon op luistert? en is hij dus in staat om te identificeren waar de aanvraag wegkomt en stuur hij ,het in geval van locatie localhost, de data/pakket naar 127.0.0.1:poortX. en komt het zo weer bij de gebruikers terecht.
 
Nou dat was mijn preek wel zo beetje, wie nu nog niet in slaap is gevallen en mij wil helpen met advies/uitleg/opbouwende kritiek. be my guest!.

Alvast bedankt,

JV.com

PS: website waar ik mijn "wijsheid" vandaan gehaald heb:
http://forge.mysql.com/wiki/MySQL_Internals_Guided_Tour#The_Skeleton_Of_The_Server_Code

* Nu ben ik mij bewust van de complexiteit van dit onderwerp en benader dit dus ook vol voorzichtheid en nederigheid. Ik doe dit omdat ik graag meer wil leren van het interne systeem mysqlserver, en omdat het een uitdaging voor me vormt om te kijken hoever ik hiermee kan komen, mijn motto is namelijk: de aanhouder wint ;).
 
« Laatst bewerkt op: 2010/09/30, 22:30:23 door JV.com »

Offline Rachid

  • Lid
    • rachidbm
    • Mijn blog
Re: Werking mysqlserver/mysqld
« Reactie #1 Gepost op: 2010/10/01, 11:43:28 »
Hey, cool dat je nieuwe dingen wilt leren. Maar het is me een beetje onduidelijk. Je begint je verhaal met
een classe aan het maken die bij in staat stelt om in mijn C++ applicaties een connectie te kunnen maken met mijn mysqlserver.
en vervolgens gaat je hele post over de mysqlserver of mysql daemon.
Dit zijn 2 verschillende dingen. Om vanuit je client (jou C++ app) een verbinding te maken met mysql hoef je helemaal niet te weten hoe die server intern werkt. Het enige dat je wilt weten is hoe je met hem moet praten. (hoe maak je verbinding, hoe stuur je een query, hoe verkrijg je data terug...)


Men kan op 2 manieren communiceren met de mysqlserver.
1. een manier om te communiceren wanneer men zich localhost bevind.
2. een manier om te communiceren wanneer men zich via het netwerk wil laten connecten
Er zijn niet 2 verschillende manieren als je het mij vraagt. Het werkt precies hetzelfde denk ik. Het enige verschil is het adres dat je in je client gebruikt om verbinding te maken. Dus localhost vs. remotehost...
Ben je ook blij dat Ubuntu zo toegankelijk en gratis is, en wil je graag net als ik iets terugdoen, kijk dan eens rond bij mwanzo, dé poort naar het bijdragen aan Ubuntu en haar gemeenschap!

Offline JV.com

  • Lid
Re: Werking mysqlserver/mysqld
« Reactie #2 Gepost op: 2010/10/01, 18:58:21 »
@Wazzzaaa

Thanks voor je reactie, ik geef toe dat het soms wat ongelukkig geformuleerd is. maar mijn vraag was in feite hoe de mysql deamon. lokaal en via het netwerk communiceert. Ik weet dat ik daarvoor niet de complete source code door hoef te lopen. maar het helpt me wel met het begrijpen van het complete proces, en zou ik doormiddel van de sourcecode te lezen weten type parameters de mysql deamon vereist.

Grt,

JV.com

Offline Mossie

  • Lid
Re: Werking mysqlserver/mysqld
« Reactie #3 Gepost op: 2010/10/02, 18:58:20 »
http://dev.mysql.com/doc/refman/5.1/en/connector-cpp.html. Kant en klare classes voor MySQL communicatie. En als je toch zelf classes wilt gaan schrijven, kan je hier nog eens naar kijken: http://dev.mysql.com/doc/refman/5.1/en/c.html.