Kirjaudu

Uutiskirje

Rekisteröidy Sektoriin ja tilaa itsellesi joko aamuisin tai iltaisin ilmestyvä uutiskirje sähköpostiisi.

Keskiviikko, 19.3.2003

MySQL-tietokannasta tuotantoversio 4.0.12

MySQL AB on julkaissut avoimeen lähdekoodiin perustuvasta MySQL-tietokantaohjelmistosta ensimmäisen tuotantokäyttöön soveltuvan 4.x-sarjan version, jonka tarkka versionumero on 4.0.12. Ehkä merkittävin uusi ominaisuus on MySQL:n perusversioon mukaan otettu tuki InnoDB-taulutyypille, joka mahdollistaa transaktioiden ja viiteavaimien käytön tietokannassa. Kehittäjille MySQL 4.0 tarjoaa libmysqld-kirjaston, joka helpottaa MySQL:n käyttöä erilaisissa sulautetuissa järjestelmissä.

Uuden MySQL:n luvataan olevan entistä suorituskykyisempi erityisesti insert-lausekkeiden ja teksti-indeksien käsittelyssä. Toimintaa nopeuttaa myös uusi SQL-kyselyvälimuisti, joka MySQL AB:n mukaan nopeuttaa toimintaa erityisesti ympäristöissä, joissa sisällöltään harvoin muuttuviin tietokantatauluihin tehdään jatkuvasti samoja kyselyitä. Tilanne on tyypillinen monissa webpalvelinsovelluksissa, joiden taustajärjestelmissä MySQL on jo muutenkin saavuttanut erittäin merkittävän aseman.

MySQL 4.0.12 on saatavilla Linux, Windows, Solaris, FreeBSD, Mac OS X, HP UX, IBM AIX, QNX, Novell Netware, SCO, SGI Irix ja DEC OSF -käyttöjärjestelmille.

Lue juttu oma, 19.3.2003 00:03. Lähde: mysql.com
Rekisteröidy ja kirjaudu sisään, jos haluat kommentoida.

Kommentit ( 10 uutta / 10 )
pistettä.
Näytä vain kommentit joilla on vähintään
Ominaisuudet
Anonyymi kommentoija, 19.3.2003 08:52:51
Pisteet: 0
on MySQL:n perusversioon mukaan otettu tuki InnoDB-taulutyypille, joka mahdollistaa
transaktioiden ja viiteavaimien käytön
tietokannassa.
En ole itse MySQL:ää käyttänyt, mutta onko tosiaan niin, että aikaisemmin MySQL:ssä ei voinut käyttää transaktioita tai viitevaimia? Eikös tätä tietokantaa ole mainostettu jonkinlaisena vaihtoehtona kalliille kaupallisille kannoille? Luulisi, että nuo ominaisuudet ovat aina olennaisia jos tehdään jotain ihan oikeaa softaa eikä vain yksinkertaisia weppisivuja.
Re: Ominaisuudet
Anonyymi kommentoija, 19.3.2003 10:02:35
Pisteet: 0
on MySQL:n perusversioon mukaan otettu tuki InnoDB-taulutyypille, joka mahdollistaa
transaktioiden ja viiteavaimien käytön
tietokannassa.
En ole itse MySQL:ää käyttänyt, mutta onko tosiaan niin, että aikaisemmin MySQL:ssä ei voinut käyttää transaktioita tai viitevaimia?
On voinut, mutta nyt ne ovat mukana myös perusversiossa. Aiemmin ne kuuluivat ammattimaisempaan käyttöön tarkoitettuun Max-versioon.

t.samuli
bungle Re: Ominaisuudet
bungle, 19.3.2003 13:37:37
Pisteet: +2
Luulisi, että nuo ominaisuudet ovat aina olennaisia jos tehdään jotain ihan oikeaa softaa
On voinut, mutta nyt ne ovat mukana myös perusversiossa. Aiemmin ne kuuluivat ammattimaisempaan käyttöön tarkoitettuun Max-versioon.
Itse käytän täysin ammattimaisessa käytössä tällä hetkellä MySQL:n versiota 3.23.56 MySQL:n MyISAM taulutyypeillä. Ammattimainen sovellukseni ei tälläkertaa tarvitse transactioita eikä viite-eheyden valvontaa (tietokannan hallintajärjestelmän toimesta). Ainoastaan nopean tavan tallentaa ja hakea tietoa kannasta. Lisäksi kuten olen aiemminkin sanonut, voidaan sovellukset ohjelmoida transaktionaalisiksi ilman, että tuki tälle on itse tietokannassa. Tietysti, jos näitä ominaisuuksia kaipaa paljon, niin silloin MySQL ei ole kovin varteenotettava vaihtoehto.

Tärkein uudistus on mielestäni sub-selectien mukaan tulo. Niiden puute on tehnyt monen tietokantaa käyttävän sovelluksen porttaamisen MySQL:lle aika työlääksi (silloin valinta on usein ollut PostgreSQL).

Heikki Tuurin kehittämä InnoDB taulutyyppi ei ole ainoa taulutyyppi, joka mahdollistaa MySQL:ssä transaktiot. Berkeleyn BDB on toinen mahdollinen. Erona näillä on se, että InnoDB tarjoaa rivitason lukitukset ja viiteavain syntaksin (ja tuen), kun taas BDB taulutyyppi käyttää sivutason lukitusta, eikä tunne tue viiteavaimia. Nuspherellä oli myös Gemini taulutyyppi, joka tarjosi vastaavia ominaisuuksia kuin InnoDB, mutta se on sitten jo toinen tarina, enkä tiedä, onko Geminiä enää kehitetty ja mikä sen tilanne on(käsittääkseni Nusphere luopui siitä, kun he pääsivät sopimukseen MySQL:n kanssa).

MySQL:stä puuttuu edelleen kyllä liuta ominaisuuksia, mutta suuntaus ja kehitys on hyvä. Itse kaipaisin ainakin näkymiä, ja joissain tapauksissa triggereistä ja tallennetuista proseduureista olisi erittäin paljon hyötyä.
--
"See the animal in his cage that you built, are you sure what side you're on?" -- Trent Reznor
Re: Ominaisuudet
Anonyymi kommentoija, 19.3.2003 17:28:34
Pisteet: 0
Luulisi, että nuo ominaisuudet ovat aina olennaisia jos tehdään jotain ihan oikeaa softaa
On voinut, mutta nyt ne ovat mukana myös perusversiossa. Aiemmin ne kuuluivat ammattimaisempaan käyttöön tarkoitettuun Max-versioon.
Itse käytän täysin ammattimaisessa käytössä tällä hetkellä MySQL:n versiota 3.23.56 MySQL:n MyISAM taulutyypeillä.
Niin minäkin. Saatan lukea väärin rivien välistä, mutta hienoista sarkasmia tihkui tuon 'ammattimainen' sanan tiheä käyttö...

t.samuli
Re: Ominaisuudet
Anonyymi kommentoija, 23.3.2003 17:22:04
Pisteet: 0
nnoDB tarjoaa rivitason lukitukset ja viiteavain syntaksin (ja tuen)
Jouduin sattumalta viikonloppuna syventymään InnoDB-tauluihin. Ikäviä rajoituksia ja kummallisuuksia löytyy. Esimerkiksi ALTER TABLE -lauseen kohdistaminen tauluun, jossa on viite, hävittää viitteen. Toisekseen viitteinä käytetyille kentille pitää manuaalisesti muodostaa indeksit.

"Both tables have to be InnoDB type and there must be an index where the foreign key and the referenced key are listed as the FIRST columns. InnoDB does not auto-create indexes on foreign keys or referenced keys: you have to create them explicitly. "

"In InnoDB versions < 3.23.50 ALTER TABLE or CREATE INDEX should not be used in connection with tables which have foreign key constraints or which are referenced in foreign key constraints: Any ALTER TABLE removes all foreign key constrainst defined for the table. You should not use ALTER TABLE to the referenced table either, but use DROP TABLE and CREATE TABLE to modify the schema. When MySQL does an ALTER TABLE it may internally use RENAME TABLE, and that will confuse the foreign key costraints which refer to the table. A CREATE INDEX statement is in MySQL processed as an ALTER TABLE, and these restrictions apply also to it."
setae Re: Ominaisuudet
setae, 19.3.2003 16:41:02
Pisteet: +1
Tärkein uudistus on mielestäni sub-selectien mukaan tulo. Niiden puute on tehnyt monen tietokantaa käyttävän sovelluksen porttaamisen MySQL:lle aika työlääksi (silloin valinta on usein ollut PostgreSQL).
Tuota, eihän tässä versiossa ole subselectejä?

"SubSELECTs

Subqueries have been implemented in MySQL version 4.1.

MySQL Server until version 4.0 only supports nested queries of the form INSERT ... SELECT ... and REPLACE ... SELECT .... You can, however, use the function IN() in other contexts. "
bungle Re: Ominaisuudet
bungle, 19.3.2003 16:47:38
Pisteet: 0
Tärkein uudistus on mielestäni sub-selectien mukaan tulo. Niiden puute on tehnyt monen tietokantaa käyttävän sovelluksen porttaamisen MySQL:lle aika työlääksi (silloin valinta on usein ollut PostgreSQL).
Tuota, eihän tässä versiossa ole subselectejä?
Totta. En tarkistanut asiaa, vaan oletin, koska olin joskus lukenut tämän http://www.mysql.com/press/release_2003_05.html artikkelin, että se tulisi myös tähän stableen, mutta muistini ei toiminut tarpeeksi hyvin. Kiitos korjauksesta.
--
"See the animal in his cage that you built, are you sure what side you're on?" -- Trent Reznor
Mikä on...
Anonyymi kommentoija, 19.3.2003 16:18:40
Pisteet: 0
..transaktioni?
bungle Re: Mikä on...
bungle, 19.3.2003 16:45:07
Pisteet: +2
..transaktioni?
Atominen tapahtuma (esim. yhden tuotteen lisääminen tuotekatalogiin) (a single logical unit of work), joka joko onnistuu tai ei onnistu. Jos jokin transaktion tapahtumista ei onnistu, niin silloin useinmiten (ei aina - tällä tarkoitan sitä, että transaktioita voidaan myös tehdä sisäkkäin, jolloin voidaan tallentaa eräänlaisia savepointeja, joita aikaisempi tapahtumia ei rollbackätä) koko transaktio epäonnistuu, jolloin kaikki tapahtumat tehdään tekemättömiksi (ns. rollback).

ACID (Atomicity, Consistency, XXXtion, and Durability) ovat määreitä, joilla määritellään se, minkälainen transaktio on ja miten sen tulee toimia:
http://searchdatabase.techtarget.com/sDefinition/0...

Transaktioihin liittyy olennaisesti ns. eristyvyystasot (isolation lavel). Eristyvyys tasoilla voidaan vaikuttaa siihen, minkälaisista tilanteista halutaan selvitä. Korkein eristyvyystaso on Sarjallallinen (tämä tarkoittaa sitä, että transaktiot suoritetaan peräkkäin - ei rinnakkain tai muutenkaan samaan aikaan... näin siis teoriassa). Korkean eristyvyystason käyttäminen tarkoittaa sitä, että tietokanta skaalautuu heikommin ja yhtäaikaisien käyttäjien määrä laskee). SQL Standardi sanoo, että jos eristyvyystasoa ei määritetä tulee käyttää korkeinta tietokannan tarjoamaa eristyvyystasoa. Käytännössä oletuksena on usein kuitenkin READ COMMITTED eristyvyystaso. Oracle on kantana erikoinen, että se ei taida tarjota sarjallistuvia transaktioita, vaan oraclen ns. sarjallistuva transaktio taitaa itseasiassa olla REPEATABLE READ. Tämä johtunee Oraclen implementaatiosta, joka käyttää hyväkseen ns. Rollback Segmenttejä. Tätä lähestymistapaa ei kovinkaan moni muu tietokanta käytä.

Hmm... ei oikein ajatus pysynyt kasassa.
--
"See the animal in his cage that you built, are you sure what side you're on?" -- Trent Reznor
jemm Re: Mikä on...
jemm, 19.3.2003 19:35:17
Pisteet: +2
..transaktioni?
Atominen tapahtuma (esim. yhden tuotteen lisääminen tuotekatalogiin) (a single logical unit of work), joka joko onnistuu tai ei onnistu.
Pieni esimerkki pseudokoodilla voi vähän selkeyttää:

1) Tapahtuma alkaa
2) Tyypillisesti useampi tietojen ylläpitokomento (INSERT/UPDATE/DELETE)
3) Jokaisen komennon jälkeen otetaan mahdollinen virhekoodi muuttujiin talteen.
4) Lopussa käydään muuttujat läpi ja tarkistetaann mahdolliset virhekoodit
5a) Jos kaikki on ok, sanotaan COMMIT ja muutokset viedään fyysisesti tietokantaan, eikä mikään sähkökatkos tms saa sitä sen jälkeen enää kadottaa.
5b) Jos yksikin komento epäonnistuu, sanotaan ROLLBACK ja tietokanta palautetaan automaattisesti siihen tilaan, jossa se oli ennen tapahtuman alkua. Koodaajan/ylläpitäjän ei siis tarvitse manuaalisesti palauttaa tilaa ennalleen eikä tietokannan eheys mene rikki.

Toinen virka niillä on tosiaan rinnakkaiskäytön hallinta, josta bungle jo jotain kertoikin. Suomeksi sanottuna sillä voidaan siis hallita hieman paremmin tilanteita, joissa esim. kaksi eri ihmistä on muokkaamassa samaa tietoa tai jossa toinen lukee tietoa, jota ollaan parhaillaan muuttamassa. Lukituksin ja erillisyysastein voi vaikuttaa siihen, miten (epä)turvallista sen haluaa olevan.

Web-sovelluksissa kannattaa niiden tilattoman luonteen vuoksi käyttää optimistista lukitusta. Sen idea on se, että tarkastetaan juuri ennen tallentamista, ovatko tiedot muuttuneet sinä aikana, kun ne otettiin lomakkeelle muokattavaksi. Esim. SQL Serverissä tässä auttaa timestamp/rowversion -tyyppi, jonka arvo muuttuu automaattisesti, kun rivillä muuttuu mikä tahansa tieto.
-Jemm