patrik_wallström::


19991003 - Nätverk & Kommunikation

MySQL - första anblicken

En svensk relationsdatabas under Linux. TCX MySQL har en prestanda som mäter sig med de stora. Den är gratis, men funktionaliteten är begränsad.

MySQL är namnet på en svensk relationsdatabas som är mycket vanlig på Internet. En av de största om man ser till de webbservrar som kör Linux faktiskt. Nyhetstjänsten Slashdot är ett välkänt exempel. Och det trots att MySQL inte ens följer med i Redhat-installationen, även om det det sägs att den numera följer med de andra Linux-distributionerna, till exempel Caldera och SuSe. Nu har MySQL dessutom släppts enligt GPL-licensen.(GNU Public License). Det vill säga enligt gängse Open Source-modell. Detta gäller tyvärr inte de absolut senaste versionerna. Där gäller fortfarande MySQL Free Public License (FPL).

MySQL är byggd främst med tanke på att den ska vara liten, smidig och portabel, samtidigt som den är snabb och stabil. Dessa målsättningar har TCX lyckats bra med att uppfylla, men tyvärr innebär det också att MySQL saknar en del oumbärliga funktioner som krävs för att bygga lite större databasprojekt. Exempelvis hanteras inte lagrade procedurer (stored procedures), främmande nycklar (foreign keys), triggers och transaktioner. Avsaknaden av den här typen av avancerade funktioner innebär att MySQL främst inriktar sig på de lite mindre och enklare projekten. Samtidigt räcker den ganska långt som den är, det finns i själva verket gott om tillämpningar som kan visa sig vara perfekta för MySQL, till och med om de är riktigt stora. Det beror helt på vilken applikation det är fråga om, du kanske inte ska bygga ett avancerat banksystem runt MySQL, däremot kan den fungera utmärkt för ett större webbprojekt eller för intranät och liknande. Särskilt om projektet har begränsad budget har MySQL en fördel i och med sitt låga pris. En annan fördel är att det går att köra MySQL på ett stort antal plattformar, inklusive Windows och OS/2.

För att testa MySQL använde vi en nyinstallerad Red Hat 6.0 på en standard Intel Pentium-dator. Hela installationsförfarandet gick på ungefär fem minuter. Vi hämtade hem RPM-paketen (Red Hat Package Manager, det vill säga Red Hats färdiga installationspaket) med den senaste versionen från leverantören TCX hemsida och installerade dem. Installationsprogrammet lade upp en användare för MySQL, samt bad oss att sätta lösenord för MySQL:s administrationskonto (root-användare). RPM lade även upp startskript snyggt och prydligt i biblioteket /etc/rc.d/init.d/, och berättade att den lade biblioteket för databaserna i /var/lib/mysql/.

MySQL administreras i likhet med de flesta andra databaser främst via textbaserade kommandon (SQL). Men när installationen var klar roade vi oss ändå med att plocka hem ett antal grafiska administrationsverktyg tillverkade av entusiaster för att börja pyssla om vår databasinstallation. Gränssnitten fanns länkade på TCX hemsida. Det visade sig emellertid att dessa, föga förvånande kanske, brast en hel del del i funktionalitet, men det verkar dyka upp fler och fler dylika. Det finns till exempel några för Windows, ett par för ODBC, och en del som pratar direkt med MySQL-porten. Vi testade några Windows-gränssnitt också, men det verkade inte som om det fanns någon som var riktigt kompetent där heller. Det finns även ett par försök till webbadministration, men dem avstod vi ifrån att testa.

De grafiska verktygen lämnar således än så länge en del att önska. Då återstår de textbaserade gränssnitt som följer med MySQL. Med verktyget mysqladmin skapar man nya databaser, kollar status på mysql-daemonen, och liknande. Den är ganska enkelt utformad och lätt att förstå. För att hantera tabeller, testa SQL-frågor, och arbeta mot sina databaser används verktyget mysql. Det är ganska lättanvänt, men i primitivaste laget. För att ändra på en tabells struktur måste man kunna sin SQL. Det finns visserligen grafiska tredjepartsverktyg som underlättar detta, men du måste nog ändå förstå vad du håller på med.

Användaradministration i MySQL är ett snårigt kapitel, och det upptar dessutom ett helt kapitel i MySQL-manualen. Vi rekommenderar att du läser igenom det ordentligt. I korthet: det finns tre interna MySQL-tabeller som heter db, host och user. Dessa tre i kombination bestämmer vad du får göra, vad du får göra det med, och varifrån du har rätt att göra det. I den testdatabas som vi satte upp verkade det fungera bra med vår testanvändare, men i ärlighetens namn är vi inte hundra procent säkra på att vi har gjort rätt. Det krävs som sagt en mycket noggrann genomläsning av kapitlet i manualen för att riktigt förstå det hela. Vi får också ett intryck av att det går att göra på flera sätt, men det är inget vi fördjupar oss i. Dessutom måste man ladda om alla användares rättigheter för att eventuella modifieringar ska få effekt. Numera finns det ett Grant-kommando som sägs fungera problemfritt, och som förenklar processen. Grant verkade fungera bra när vi testade det.

Vad gäller prestanda och tillgänglighet (uptime) finns det ingenting att anmärka på. MySQL lever sitt eget liv, och vi har inte behövt göra några särskilda handpåläggningar sedan installationen. Vi har dock velat se ordentliga loggar på det som händer med vår testdatabas, och det var inte det enklaste att fixa till, i alla fall inte med den standardinstallation vi lade in. Vi hittade ingen uppenbar installationsfil, inte ens /etc/my.cnf, utan vi fick gå in i en av startfilerna, safe_mysqld, och lägga in det för hand. RPM-paketet lägger in HTML-dokumentation snyggt och prydligt under /var/doc, men viktiga man-filer saknas. Nämligen alla utom manualfilen för mysql. I källkodspaketet finns de, men inte i RPM-paketet. Den övriga dokumentationen är alldeles utmärkt, och det finns utförliga exempel på det man kan göra.

För att programmera mot MySQL finns det ett stort antal applikationsgränssnitt (API:er) att använda. Det går att använda C, C++, Java, Perl med mera. Dessa går att hämta hem från TCX hemsida. Vi har testat DBI-interfacet till Perl, och det var inte alls svårt att använda. Särskilt inte om man har lite vana av Perl. Till webbservrarna Apache och Roxen finns det dessutom inbyggda kopplingar direkt till MySQL, så vill man koppla sin MySQL mot WWW så är det inga problem alls att bygga sig en webbapplikation. Det underlättar ju en del för mindre sajter att MySQL är liten och smidig, och dessutom inte behöver en fullärd databasadministratör (DBA) för att komma igång att använda databaser. Det är dessutom inte ett dugg problematiskt att säkerhetskopiera sina databaser, kopiera helt enkelt filerna direkt till din backupstation, eller använd kommandot mysqldump för att göra en SQL-dump till en fil som du kan säkerhetskopiera, eller replikera till en sekundär MySQL-installation.

Av Patrik Wallström

Faktaruta
MySQL 3.22.26a
Typ av produkt: Relationsdatabas
Leverantör: TCX
Distributör: TCX
Pris: Gratis för privatbruk, $200 för företagslicens med support
NoK tycker: En liten och smidig databas för semiprofessionellt bruk!
Betyg: 3

Screenshots:


dbMetrix


Det textbaserade verktyget mysql,
samt en av tabellerna med rättigheter.