Tallennettu toimintosarja on tietokantaobjekti , joka on joukko SQL -käskyjä , jotka käännetään kerran ja tallennetaan palvelimelle. Tallennetut proseduurit ovat hyvin samankaltaisia kuin tavalliset korkean tason kielten proseduurit , niillä voi olla syöttö- ja lähtöparametreja ja paikallisia muuttujia , ne voivat suorittaa numeerisia laskutoimituksia ja operaatioita merkkitiedoille, joiden tulokset voidaan liittää muuttujiin ja parametreihin. Tallennetut toiminnot voivat suorittaa vakiotietokantatoimintoja (sekä DDL että DML ). Lisäksi tallennetuissa proseduureissa ovat mahdollisia silmukat ja haarat, eli ne voivat ohjata suoritusprosessia ohjeiden avulla.
Tallennetut toiminnot ovat samanlaisia kuin käyttäjän määrittämät funktiot (UDF). Suurin ero on, että käyttäjän määrittämiä toimintoja voidaan käyttää kuten mitä tahansa muuta lauseketta SQL-kyselyssä, kun taas tallennettuja proseduureja on kutsuttava CALL-funktiolla:
CALL - menettely ( ... )tai
SUORITA menettely ( ... )Tallennetut proseduurit voivat palauttaa tulosjoukkoja, eli SELECT-kyselyn tuloksia. Tällaisia tulosjoukkoja voidaan käsitellä käyttämällä kohdistimia, muilla tallennetuilla proseduureilla, jotka palauttavat tulosjoukkoosoittimen, tai sovelluksilla. Tallennetut toimintosarjat voivat sisältää myös ilmoitettuja muuttujia tietojen ja kohdistimien käsittelyä varten, mikä mahdollistaa silmukan useiden taulukon rivien yli. SQL-standardi tarjoaa IF-, LOOP-, REPEAT-, CASE- ja monia muita lausekkeita käytettäväksi. Tallennetut toiminnot voivat hyväksyä muuttujia, palauttaa tuloksia tai muokata muuttujia ja palauttaa ne riippuen siitä, missä muuttuja on ilmoitettu.
Tallennettujen menettelyjen toteutus vaihtelee DBMS:stä toiseen. Useimmat suuret tietokantatoimittajat tukevat niitä muodossa tai toisessa. DBMS:stä riippuen tallennetut proseduurit voidaan toteuttaa useilla ohjelmointikielillä, kuten SQL, Java, C tai C++. Tallennetut proseduurit, joita ei ole kirjoitettu SQL:llä, voivat suorittaa itse SQL-kyselyjä tai eivät. Tallennettujen menettelytapojen lisääntyvä käyttö on johtanut proseduurielementtien ilmestymiseen SQL:1999- ja SQL:2003-standardien SQL-kielellä SQL/PSM -osassa . Tämä teki SQL :stä välttämättömän ohjelmointikielen . Useimmat DBMS:t tarjoavat omat omat ja toimittajan laajennukset SQL/PSM:n lisäksi.
Tallennetut proseduurit luodaan yleensä käyttämällä SQL-kieltä ja sen erityistä toteutusta valitussa DBMS :ssä . Esimerkiksi Microsoft SQL Server DBMS: ssä on näitä tarkoituksia varten Transact-SQL-kieli Oracle - PL /SQL , InterBase ja Firebird - PSQL , PostgreSQL - PL/pgSQL , PL/Tcl , PL/Perl , PL/Python , IBM DB2 - SQL/PL , Informix - SPL :ssä . MySQL noudattaa SQL:2003 - standardia melko tarkasti ja sen kieli on samanlainen kuin SQL/PL.
Joissakin DBMS-järjestelmissä on mahdollista käyttää tallennettuja proseduureja, jotka on kirjoitettu millä tahansa ohjelmointikielellä , joka pystyy luomaan itsenäisiä suoritettavia tiedostoja, kuten C++ tai Delphi . Microsoft SQL Server -terminologiassa tällaisia toimenpiteitä kutsutaan laajennetuiksi tallennetuiksi toimenpiteiksi, ja ne ovat yksinkertaisesti toimintoja , jotka sisältyvät Win32 DLL -tiedostoon . Ja esimerkiksi Interbasessa ja Firebirdissä DLL / SO:sta kutsutuille funktioille määritellään toinen nimi - UDF (User Defined Function). MS SQL 2005 esitteli mahdollisuuden kirjoittaa tallennettuja proseduureja millä tahansa .NET -kielellä , ja laajennetuista tallennetuista toimenpiteistä on tarkoitus luopua tulevaisuudessa. Oracle DBMS puolestaan mahdollistaa tallennettujen toimintojen kirjoittamisen Java-kielellä . [1] IBM DB2:ssa tallennettujen proseduurien ja funktioiden kirjoittaminen perinteisillä ohjelmointikielillä on perinteinen tapa, jota tuetaan alusta alkaen, ja SQL-prosessilaajennus lisättiin tähän DBMS-järjestelmään vasta melko myöhään, sen jälkeen, kun se sisällytettiin ANSI-standardiin. . Informix tukee myös Java- ja C - proseduureja . [2]
Oracle DBMS : ssä tallennetut proseduurit voidaan yhdistää ns. paketeiksi . Paketti koostuu kahdesta osasta - spesifikaatiosta ( eng. package specification ), joka määrittelee tallennetun menettelyn määritelmän, ja rungosta ( eng. package body ), jossa sen toteutus sijaitsee. Siten Oracle antaa sinun erottaa ohjelmakoodin rajapinnan sen toteutuksesta.
IBM DB2:ssa tallennetut toimintosarjat voidaan yhdistää .
PostgreSQL : ssä on tallennettujen proseduurien lisäksi mahdollista luoda toimintoja, jotka palauttavat void type .
Tallennetut menettelyt parantavat suorituskykyä, parantavat ohjelmointivaihtoehtoja ja tukevat tietoturvaominaisuuksia.
Usein käytetyn kyselyn tallentamisen sijaan asiakkaat voivat viitata sopivaan tallennettuun toimintosarjaan. Kun tallennettu toimintosarja kutsutaan, palvelin käsittelee sen sisällön välittömästi.
Varsinaisen kyselyn suorittamisen lisäksi tallennetuilla toimenpiteillä voit myös suorittaa laskelmia ja käsitellä tietoja - muuttaa, poistaa, suorittaa DDL-käskyjä (ei kaikissa DBMS-järjestelmissä!) ja kutsua muita tallennettuja proseduureja, suorittaa monimutkaista tapahtumalogiikkaa. Yhdellä käskyllä voit kutsua monimutkaista komentosarjaa, joka sisältyy tallennettuun proseduuriin, jolloin vältetään satojen komentojen lähettäminen verkon yli ja erityisesti tarve siirtää suuria tietomääriä asiakkaalta palvelimelle.
Useimmissa DBMS-järjestelmissä, kun tallennettu toimintosarja suoritetaan ensimmäisen kerran, se käännetään (jäsennetään ja luodaan tietojen käyttösuunnitelma). Jatkossa sen käsittely on nopeampaa. Oracle DBMS tulkitsee datasanakirjaan tallennetun prosessikoodin . Oracle 10g :stä alkaen tuetaan C - kielellä tallennetun prosessikoodin niin sanottua natiivia käännöstä ja sitten kohdekoneen konekoodiin , jonka jälkeen kun tallennettua proseduuria kutsutaan, sen käännetty objektikoodi on suoraan teloitettu.
Luotu tallennettu proseduuri voidaan kutsua milloin tahansa, mikä tarjoaa modulaarisuutta ja kannustaa koodin uudelleenkäyttöön . Jälkimmäinen helpottaa tietokannan ylläpitoa, koska se eristyy muuttuvista liiketoimintasäännöistä. Voit muokata tallennettua menettelyä uusien sääntöjen mukaiseksi milloin tahansa. Sen jälkeen kaikki sitä käyttävät sovellukset noudattavat automaattisesti uusia liiketoimintasääntöjä ilman suoria muutoksia.
Testauksen, sovellusten liiketoimintalogiikan riippumattomuuden DBMS:stä yksinkertaistamiseksi on olemassa lähestymistapa, jossa DBMS toimii vain arkistona, jossa on vähimmäismäärä tallennettuja proseduureja tai ne hylätään kokonaan. Tässä tapauksessa käytetään liiketoimintalogiikkaohjelmistokokonaisuuksien yhdistämistä tallennustilaan. Katso ORM (eng. Object-relational mapping, rus. Object-relational mapping)
Tallennettujen toimenpiteiden avulla voit rajoittaa tai kokonaan sulkea pois suoran käyttäjien pääsyn tietokantataulukoihin, jolloin käyttäjille jää vain oikeudet suorittaa tallennettuja toimenpiteitä, jotka tarjoavat epäsuoran ja tiukasti säädellyn pääsyn tietoihin. Lisäksi jotkin DBMS-järjestelmät tukevat tallennetun toimintosarjan tekstin salausta (wrapping).
Näiden suojausominaisuuksien avulla voit eristää tietokannan rakenteen käyttäjästä, mikä varmistaa tietokannan eheyden ja luotettavuuden.
Toiminnot, kuten " SQL-injektio ", ovat vähemmän todennäköisiä, koska hyvin kirjoitetut tallennetut toiminnot vahvistavat lisäksi syöttöparametrit ennen kyselyn välittämistä DBMS:lle.
Tietokanta | |
---|---|
Käsitteet |
|
Objektit |
|
Avaimet | |
SQL | |
Komponentit |