rĪgas tehniskĀ universitĀte - · web viewjan 01, 2006 · classification of...

111
Datu bāzes sistēmas paplašināšanas iespējas Data base system extensebility Extensibility is a systems design principle where the implementation takes future growth into consideration. Paplašinājumiem jānodrošina: 1) jauna funkcionalitāte (new functionality); 2) esošās funkcionalitātes modifikācija (modification of existing functionality). The central theme is to provide for change – typically enhancements – while minimizing impact to existing system functions.

Upload: vongoc

Post on 11-Mar-2018

219 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

Datu bāzes sistēmas paplašināšanas iespējasData base system extensebility

Extensibility is a systems design principle where the implementation takes future growth into consideration.

Paplašinājumiem jānodrošina:1) jauna funkcionalitāte (new functionality);2) esošās funkcionalitātes modifikācija (modification of existing

functionality).

The central theme is to provide for change – typically enhancements – while minimizing impact to existing system functions.

Page 2: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

2

Paplašinājumu veidošanas mehānismiClassification of extensibility mechanisms

There are three different forms of software extensibility:1) white-box extensibility. A software system can be extended by

modifying the source code, and it is the most flexible and the least restrictive form. There are two sub-forms of extensibility:

open-box extensibility. Original source code is directly being hacked into. It requires available source code and the modification permitted source code license.

glass-box extensibility. Glass-box extensibility (also called architecture driven frameworks) allows a software system to be extended with available source code, but may not allow the code to be modified. Extensions have to be separated from the original system in a way that the original system is not affected. One example of this form of extensibility is object-oriented application frameworks which achieve extensibility typically by using inheritance and dynamic binding.

2) gray-box extensibility. Gray-box extensibility is a compromise between a pure white-box and a pure black-box approach, which does not rely fully on the exposure of source code. Programmers could be given the system’s specialization interface which lists all available abstractions for refinement and specifications on how extensions should be developed.

3) black-box extensibility. In black-box extensibility (also called data-driven frameworks) no details about a system’s implementation are used for implementing deployments or extensions; only interface specifications are provided. This type of approach is more limited than the various white-box approaches. Black-box extensions are typically achieved through system configuration applications or the use of application-specific scripting languages by defining components interfaces.

Page 3: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

3

DBS extensions

Significant extensions are required to the services normally provided by the DBMS. Among these extensions are:

1) user-defined types - the ability to define text, image and location datatypes;

2) storage of user-defined type instances - the ability to store and manipulate multi-media type instances;

3) domain-specific operations - support for user-defined functions/operators like Contains(), Distance();

3) domain-specific indexing - support for indexes specific to text data (to evaluate Contains()), spatial data (Distance()) etc., which can be used to speed the query.

4) optimizer extensibility - support for intelligent ordering of query predicates during evaluation. Since all these operators and functions are user-defined, the optimizer has to be extended to allow type-designers to specify the costs of various operations on the types.

In each case where a service is an extensible one, a interface or API provides access to the service.

Page 4: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

4

DBMS Oracle data cartridges

Data cartridges extend the capabilities of the Oracle server by taking advantage of Oracle Extensibility Architecture framework. This framework lets you capture business logic and processes associated with specialized or domain-specific data in user-defined data types. Data cartridges that provide new behavior without needing additional attributes have the option of using packages rather than user-defined types. Either way, you determine how the server interprets, stores, retrieves, and indexes the application data. You can customize the indexing and query optimization mechanisms of an extensible database management system and provide specialized services or more efficient processing for user-defined business objects and rich types. When you register your implementations with the server through extensibility interfaces, you direct the server to implement your customized processing instructions instead of its own default processes.The extensibility interfaces consist of functions that the server calls to execute the custom indexing or optimizing behavior implemented for a data cartridge. The interfaces are defined by Oracle; as a cartridge developer, you must implement the functions or interfaces that have the specialized behavior you require in your application. In general, you implement the functions as static methods of an object type. An object type that implements the extensible indexing interface is called an indextype; an object type that implements the extensible optimizing interface is called a statistics type.

Page 5: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

5

Kodola paplašināšanas process

Problēmu vides analīze

Nepieciešamo objektu noteikšana

Objektu tipu definēšana ar SQL un PL/SQL

Nepieciešamās metodes problēmu vidē

IndekssEksistējošs

indekssJauna indeksa tipa definēšana

multi-domain

Indeksa definēšana

Eksistējošā optimizatora lietošana

Optimizatora paplašināšana

Testēšana

Scenāriju komandu izpilde

Izmaksas

Page 6: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

6

DBVS interfeisi un servisi

DBVS Oracle nodrošināja lietotāju ar plašu interfeisu klāstu visdažādāko DBVS kodola paplašināšanas iespēju realizācijai. Noteiktā veidā realizējot iespējamos interfeisus, lietotājs var definēt visdažādākās funkcijas, kuras izpildīs serveris, apstrādājot problēmsfēras datus. Programmēšanas gaitā ir pieejams noteikts datu bāzes servisu klāsts, kas dod iespēju mijiedarboties ar datu bāzes kodolu (darboties ar paplašināmo tipu sistēmu, konstruēt un izpildīt vaicājumus, mijiedarbība starp dažādām programmēšanas valodām u.c.) Kodola paplašinājumu vienkāršoti var uztvert kā neatkarīgi izstrādājamu programmu (bieži vien arī dažādās valodās), kas, pateicoties Oracle paplašināšanas arhitektūrai, tiek cieši integrēta ar kodolu un paplašina to.

Būtiskākais no paplašināšanas aspektiem ir paplašināmās indeksēšanas arhitektūra, kas ir pielāgojama problēmsfēras specifiskajām DBVS lietojuma prasībām. Paplašināmās indeksēšanas mehānisms dod iespēju izjaukt barjeru, kas līdz šim radīja grūtības liela apjoma sarežģītu struktūru datu efektīvai glabāšanai un apstrādei datu bāzē.

Page 7: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

7

DBVS Oracle kodola paplašināšanas iespēju klāsts

Paplašināmo tipu sistēmaPaplašināmo tipu sistēma ir viens no būtiskākajiem Oracle kodola paplašinājumiem. Tā ir ne tikai iespēja papildināt jau definētos tipus, bet arī rīks, ar kura palīdzību tiek realizēti vairāki kodola paplašinājumu interfeisi.Paplašināmo tipu sistēma nodrošina augsta līmeņa (SQL – bāzētu) interfeisu tipu definēšanā. Tipu „uzvedība” var tikt realizēta Java, C/C++ vai arī PL/SQL valodā. Oracle DBVS automātiski nodrošina zema līmeņa infrastruktūras servisus, kuri nepieciešami datu ievadei – izvadei, daudzveidīgai piekļuvei jaunajiem datu tipiem, optimizāciju datu pārraidei starp datu bāzi un lietojumiem u.c. Paplašināmo tipu sistēma nodrošina:1) sarežģītu strukturētu;2) daļēji strukturētu;3) nestrukturētu datu glabāšanas iespējas datu bāzē.

Page 8: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

8

Paplašināmā servera izpildvide

Viena no svarīgākajām Oracle paplašināšanas arhitektūras iezīmēm ir iespēja realizēt procedūras un funkcijas dažādās programmēšanas valodās. Oracle piedāvā lietotāja funkcijas un metodes realizēt dzimtajā PL/SQL valodā, Java vai arī C/C++ valodās.Ļoti lielu vērību Oracle piešķir drošības jautājumiem, kas ir saistīti ar tā saucamā „nedrošā” programmas koda izpildi.

1. Gadījumā, kad programma tiek realizēta PL/SQL valodā (vai arī Java valodā, kura ir dziļi integrēta Oracle DBVS), tā var tikt izpildīta Oracle adrešu telpā, jo, pateicoties dažādiem iekšējiem aizsardzības mehānismiem, tās izpilde nevar kaitēt datu bāzes servera darbībai.

2. Savukārt C/C++ valodas kodu varētu nosaukt par „bīstamu”, jo viena no šīs valodas specifikām ir programmētāja iespēja operēt ar atmiņu patvaļīgi, līdz ar to nav garantiju, ka kāda kļūda algoritmā nekaitēs tās atmiņas adrešu telpai, kura ir pieejama programmai. Līdz ar to šajā gadījumā Oracle tādas programmas izpilda ārējā adrešu telpā.

Page 9: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

9

Par drošību atbild extproc (external procedure) – speciāls izdalīts ārējās procedūras aģents, kas nodrošina ārējo procedūru izpildi. Šajā shēmā parādās arī Listener process, kurš atbild uz lietotāja procesu prasībām pieslēgties datu bāzei, un līdz ar to darbojas kā starpposms starp lietojumu un datu bāzi. Izmantojot tīkla pieslēgumu, kuru nodibināja Listener process, lietojums nodod ārējās procedūras aģentam bibliotēkas vārdu, ārējās procedūras nosaukumu un visus nepieciešamos parametrus.Līdz ar to var izskatīt procesus, kas notiek katrā no adrešu telpām.Ārējā adrešu telpā:1) ārējo procedūru aģents tiek izsaukts vai nu ar Listener procesu vai arī ar bibliotēku;2) ārējās procedūras aģents izsauc starpvalodu metožu servisu Oracle adrešu telpā.Oracle adrešu telpā:1) starpvalodu metožu serviss piekļūst Oracle datu bāzei caur Oracle serveri;2) starpvalodu metožu serviss izsauc vai nu Listener, vai nu ārējo procedūru aģentu ārējā adrešu telpā.

Page 10: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

10

Types of indexes

Oracle Database provides several indexing schemes, which provide complementary performance functionality. Indexes are categorized as follows:

1) B-tree indexes. These indexes are the standard index type. They are excellent for highly selective indexes (few rows correspond to each index entry) and primary key indexes. Used as concatenated indexes, a B-tree index can retrieve data sorted by the indexed columns. B-tree indexes have the following subtypes:a) index-organized tables. An index-organized table differs from a

heap-organized because the data is itself the index. See "Overview of Index-Organized Tables".

b) reverse key indexes. In this type of index, the bytes of the index key are reversed, for example, 103 is stored as 301. The reversal of bytes spreads out inserts into the index over many blocks. See "Reverse Key Indexes".

c) descending indexes. This type of index stores data on a particular column or columns in descending order. See "Ascending and Descending Indexes".

d) B-tree cluster indexes. This type indexes a table cluster key. Instead of pointing to a row, the key points to the block that contains rows related to the cluster key. See "Overview of Indexed Clusters".

2) Bitmap and bitmap join indexes. In a bitmap index, an index entry uses a bitmap to point to multiple rows. In contrast, a B-tree index entry points to a single row. A bitmap join index is a bitmap index for the join of two or more tables. See "Overview of Bitmap Indexes".

3) Function-based indexes. This type of index includes columns that are either transformed by a function, such as the UPPER function, or included in an expression. B-tree or bitmap indexes can be function-based. See "Overview of Function-Based Indexes".

4) Application domain indexes. A user creates this type of index for data in an application-specific domain. The physical index need not use a traditional index structure and can be stored either in the Oracle database as tables or externally as a file. See "Overview of Application Domain Indexes".

Page 11: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

11

Balansētie koki

Balansētie koki (Balanced tree, jeb B-tree) tiek izmantoti skaitlisko tipu indeksēšanai. Balansētais koks pēc būtības ir grafa struktūra koks, un attiecīgo vērtību pārmeklēšana tajā notiek, virzoties uz dziļākajiem koka līmeņiem, līdz netiek sasniegtas koka strupceļa virsotnes. Balansēto koku algoritms nodrošina efektīvu datu ievietošanu un izdzēšanu, rūpīgi balansējot koka plašumu un dziļumu.

Page 12: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

12

Index organized tabele

Page 13: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

13

Hash indexes

Heša indeksi (hash indexes) ir vairāk paredzēti simbolisko vērtību indeksēšanai. Tie dod ātru pieeju specifiskajam ierakstam, balstoties uz dotā lauka izskaitļoto vērtību, ko sauc par heša vērtību. Katrai indeksējamās kolonnas vērtībai tiek izskaitļota heša vērtība, un rezultāti saglabāti indeksa tabulā. Tādā veidā, meklējot noteiktas vērtības, datu bāzes vadības sistēma var izskaitļot to heša vērtību un veikt attiecīgo atlasi no indeksa tabulas datiem.

Page 14: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

14

Overview of Bitmap Indexes

In a bitmap index, the database stores a bitmap for each index key. In a conventional B-tree index, one index entry points to a single row. In a bitmap index, each index key stores pointers to multiple rows.

Page 15: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

15

Overview of function-based indexes

A function-based index computes the value of a function or expression involving one or more columns and stores it in an index. A function-based index can be either a B-tree or a bitmap index.The indexed function can be an arithmetic expression or an expression that contains a SQL function, user-defined PL/SQL function, package function, or C callout. For example, a function could add the values in two columns.

Function-based indexes are efficient for evaluating statements that contain functions in their WHERE clauses. The database only uses the function-based index when the function is included in a query.

CREATE INDEX emp_total_sal_idx ON employees (12 * salary * commission_pct, salary, commission_pct);

SELECT employee_id, last_name, first_name, 12*salary*commission_pct AS "ANNUAL SAL"FROM employeesWHERE (12 * salary * commission_pct) < 30000ORDER BY "ANNUAL SAL" DESC;

EMPLOYEE_ID LAST_NAME FIRST_NAME ANNUAL SAL----------- ------------------------- -------------------- ------------------------ 159 Smith Lindsey 28800 151 Bernstein David 28500 152 Hall Peter 27000 160 Doran Louise 27000 175 Hutton Alyssa 26400 149 Zlotkey Eleni 25200 169 Bloom Harrison 24000

Page 16: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

16

Application domain indexes

The domain index schema object is an application-specific index that is created, managed, and accessed by routines supplied by an indextype. It is called a domain index because it indexes data in application-specific domains.

Oracle provides extensible indexing to accommodate indexes on complex data types such as documents, spatial data, images, and video clips and to make use of specialized indexing techniques. With extensible indexing, you can encapsulate application-specific index management routines as an indextype schema object and define a domain index (an application-specific index) on table columns or attributes of an object type. Extensible indexing also provides efficient processing of application-specific operators.

The application software, called the cartridge, controls the structure and content of a domain index. The Oracle server interacts with the application to build, maintain, and search the domain index. The index structure itself can be stored in:

1) the Oracle database as an index-organized table;2) externally as a file.

The indextype schema object encapsulates the set of routines that manage and access a domain index. The purpose of an indextype is to enable efficient search and retrieval functions for complex domains such as text, spatial, image, and OLAP data using external application software.

Page 17: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

17

The Oracle Data Cartridge Interface (ODCIIndex) specifies all the routines that must be implemented by the index designer. The routines can be implemented as type methods.

Index definition routines: 1) build the domain index when a CREATE INDEX statement references the

indextype; 2) alter the domain index information when a ALTER INDEX statement alters it; 3) remove the index information when a DROP INDEX statement drops it; 4) truncate (saīsināt) the index when the base table is truncated.

Index maintenance routines: maintain the contents of the domain index when the base table rows are inserted, deleted, updated, or loaded.

Index scan routines implement access to the domain index to retrieve rows of the base table that satisfy predicates containing built-in or user-defined operators in the accessing SQL statement. An index scan is specified through three routines:

1) istart, which initializes data structures; 2) ifetch, which fetches rows satisfying the predicate; 3) iclose, which closes the cursor after all rows satisfying the predicate are

returned.

User-defined operators can be invoked anywhere built-in operators can be used, that is, wherever expressions can occur in queries and data manipulation statements, such as: The select list of a SELECT statement or subquery The condition of a WHERE clause The ORDER BY and GROUP BY clauses

The user-defined function bound to an operator can be: A stand-alone function A package function An object member method

An indextype provides index-based implementation for the operators listed in the indextype definition. The Oracle server can invoke routines specified in the indextype to search the domain index to identify candidate rows and then do further processing, such as filtering, selection, and fetching of rows.

Page 18: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

18

Page 19: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

19

Paplašināmās indeksēšanas mehānismsJauna indeksa tipa veidošana

Tā kā indeksēšana dažādiem datu tipiem var krasi atšķirties, Oracle piedāvā universālu paplašināmās indeksācijas mehānismu, ar kura palīdzību ir iespējams:

1) definēt problēmsfēras indeksu kā jaunu indeksa tipu;2) glabāt indeksa datus vai nu Oracle DB (tabulu veidā), vai arī ārpus

tās;3) kontrolēt, izgūt un izmantot indeksu datus, lai optimālāk realizētu

lietotāja vaicājumus.Tādus indeksus sauc par problēmsfēras indeksiem, jo tie indeksē datus problēmsfēras specifiskajā veidā.

Kodola paplašinājumam nepieciešams:1) definēt indeksa formātu un saturu;2) izveidot, izdzēst un atjaunot indeksu;3) piekļūt un interpretēt indeksa saturu (vaicājumu izpildes laikā).

Indeksa tipa definēšana notiek pakāpeniski:1) sākumā tiek definēti problēmsfēras operatori;2) tad objektu tips ar tā ķermeni, kas realizē pilnvērtīgai indeksa

darbībai nepieciešamās metodes;3) tad tiek izveidots indeksa tips, balstoties uz dotajiem uz iepriekš

izveidotajiem operatoriem un objektu tipu.

Oracle paplašināmo indeksu darbības pamatprincips ir pamattabulas rindiņu identifikatoru glabāšana kopā ar datiem – darbojoties indeksa mehānismam vaicājuma laikā, datu bāzes vadības sistēmai tiek nodotas to rindiņu identifikatori, kas apmierina specializēto vaicājumu (indeksa mehānisms var tikt iedarbināts, kad vaicājuma WHERE daļā parādās problēmsfēras operators, kas ir piesaistīts indeksa tipam). Tādā veidā, ja vien ir iespējams, rindiņas, kuras var tikt izgūtas, balstoties uz operatora predikāta izteiksmi, tiek izgūtas pateicoties indeksa mehānisma darbībai,- ja vien optimizators nosaka, ka griešanās pie problēmsfēras indeksa ir izdevīgāka (paplašināmā optimizatora specifika tiks apskatīta nākamajā apakšnodaļā).

Page 20: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

20

Objekta tipu projektēšanaObjekta paraugs (reģioni, vērtības)

Page 21: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

21

Objekta tipu definēšana

Tiek definēts kolekciju tips reģionu vērtību

glabāšanai.

Masīvs reģionu vērtību glabāšanai

create or replace type T_REGIONU_VERTIBAS as varray(25) of number;

Objektu tips reģionu vērtību glabāšanai, kas papildus satur:

1) ieraksta laiku;

2) minimālās elektroenerģijas patēriņa vērtības;

3) maksimālās elektroenerģijas patēriņa vērtības;

4) kopējās elektroenerģijas patēriņa vērtības;

5) metodi to noteikšanai.

create or replace type T_ENERGO_PIEPRAS as object (

KOP_PIEPRAS number,

MIN_PIEPRAS number,

MAX_PIEPRAS number,

REGIONU_VERTIBAS T_REGIONU_VERTIBAS,

LAIKS date,

MEMBER procedure APR_PIEPRAS);

Page 22: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

22

Metode APR_PIEPRAS

Metode APR_PIEPRAS kalpo kopējā, minimālā un maksimālā elektroenerģijas

patēriņa aprēķināšanai un saglabāšanai atribūtos. Algoritms iziet cauri visām

kolekcijas vērtībām, un izskaitļo to summu, kā arī atrod minimālo un maksimālo

vērtības. Objektu tipa ķermeņa izveidošana:

create or replace type body T_ENERGO_PIEPRAS as

MEMBER procedure APR_PIEPRAS is

i number;

kop number;

minv number;

maxv number;

BEGIN

kop := 0;

minv := REGIONU_VERTIBAS(REGIONU_VERTIBAS.FIRST);

maxv := REGIONU_VERTIBAS(REGIONU_VERTIBAS.FIRST);

for i in REGIONU_VERTIBAS.FIRST .. REGIONU_VERTIBAS.LAST LOOP

kop := kop + REGIONU_VERTIBAS(i);

if minv > REGIONU_VERTIBAS(i) then minv :=

REGIONU_VERTIBAS(i);

end if;

if maxv < REGIONU_VERTIBAS(i) then maxv :=

REGIONU_VERTIBAS(i);

end if;

end loop;

KOP_PIEPRAS := kop;

MIN_PIEPRAS := minv;

MAX_PIEPRAS := maxv;

end; end;

Page 23: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

23

-- Tabula ar problēmsfēras objekta tipa kolonnu

create table ENERGO_TABULA (

ID number Primary key,

PARAUGS T_ENERGO_PIEPRAS);

delete ENERGO_TABULA;

-- Datu ievade

DECLARE

EN T_ENERGO_PIEPRAS;

BEGIN

EN := T_ENERGO_PIEPRAS(NULL, NULL, NULL,

T_REGIONU_VERTIBAS( 5, 7,12, 7, 4, 6,10,13, 8, 5, 9,14,12, 9, 6, 8, 9,11,10, 7,

6, 7,10, 9, 5),

TO_DATE('01-01-2006 01','MM-DD-YYYY HH') );

EN.APR_PIEPRAS;

INSERT INTO ENERGO_TABULA VALUES (1, EN);

END;

Page 24: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

24

select a.*

from ENERGO_TABULA a;

Page 25: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

25

Izveidoto objektu apstrādes funkcijas

Funkcija Patiesumvērtība

ENERGO_VIENADS (paraugs, 1, 5) = 1 Patiess, jo 1. reģiona vērtība ir 5

ENERGO_LIELAKS (paraugs, 2, 8) = 0 Patiess, jo 2. reģiona vērtība nav lielāka par 8

ENERGO_VIENADS_JEBK (paraugs, 3) = 1 Aplams, jo neviena no vērtībām nav vienāda ar 3

ENERGO_LIELAKS_JEKB (paraugs, 13) = 1 Patiess, jo 12. reģiona vērtība tik tiešām ir lielāka par 13

ENERGO_MAZAKS_JEBK (paraugs, 6) = 0 Aplams, jo vairākas vērtības ir mazākas par 6

Oracle operatori tiek piesaistīti konkrētajām funkcijām. Līdz ar to sākumā

ir jāizveido attiecīgās funkcijas, un pēc tam ar noteiktu komandu

palīdzību jāpiesaista operatoriem.

Page 26: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

26

Funkciju izveidošana

Funkcija F_ENERGO_VIENADS, kas kā parametrus pieņem attiecīgā objektu tipa

eksemplāru (kas satur reģionu vērtību kolekciju), reģiona numuru un vērtību, ar kuru

funkcija veic salīdzināšanu. Funkcija pārbauda, vai norādītā reģiona indekss

nepārsniedz masīva pēdējo indeksu, un salīdzina argumentos sniegto vērtību ar

attiecīgā reģiona ierakstīto vērtību objektu tipa eksemplārā. Ja vērtības ir vienādas,

tad funkcija atgriež vērtību „1” (patiess), pretējā gadījumā – „0” (aplams).

-- Vai enerģijas patēriņa vērtība ir vienāda ar objekta konkrētā reģiona patēriņu?

CREATE FUNCTION F_ENERGO_VIENADS (OBJ T_ENERGO_PIEPRAS,

REGIONS NUMBER, VERTIBA NUMBER) RETURN NUMBER AS

BEGIN

IF REGIONS <= OBJ.REGIONU_VERTIBAS.LAST THEN

IF (OBJ.REGIONU_VERTIBAS(REGIONS) = VERTIBA) THEN

RETURN 1;

ELSE

RETURN 0;

END IF;

ELSE

RETURN NULL; -- ārpus robežām

END IF;

END;

Funkciju nosaukumi, kas ir analogi attiecīgo operatoru nosaukumiem, sākās ar

priedēkli „F_”. Funkciju argumentu vērtībām jāsakrīt ar operatora argumentiem.

Page 27: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

27

Funkciju piesaiste operatoriem

Kad funkcijas ir izveidotas, tās var piesaistīt operatoriem. Operatoru izveide Oracle

notiek ar komandas CREATE OPERATOR palīdzību, kur operatora nosaukumam

norāda parametru kopu un atgriežamo vērtību, un, svarīgākais – izmantojamo

funkciju. Operatoru izveide:

create operator ENERGO_VIENADS binding (T_ENERGO_PIEPRAS, NUMBER, NUMBER) return number USING F_ENERGO_VIENADS;

create operator ENERGO_LIELAKS binding (T_ENERGO_PIEPRAS, NUMBER, NUMBER) return number USING F_ENERGO_LIELAKS;

create operator ENERGO_MAZAKS binding (T_ENERGO_PIEPRAS, NUMBER, NUMBER) return number USING F_ENERGO_MAZAKS;

create operator ENERGO_VIENADS_JEBK binding (T_ENERGO_PIEPRAS, NUMBER)return number USING F_ENERGO_VIENADS_JEBK;

create operator ENERGO_LIELAKS_JEBK binding (T_ENERGO_PIEPRAS, NUMBER)return number USING F_ENERGO_LIELAKS_JEBK;

create operator ENERGO_MAZAKS_JEBK binding (T_ENERGO_PIEPRAS, NUMBER) return number USING F_ENERGO_MAZAKS_JEBK;

select a.ID

from ENERGO_TABULA a

where ENERGO_VIENADS(a. PARAUGS, 2, 7) = 1;

Page 28: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

28

Lietotāju definēti operatori un indeksēšana

Operatori ir augsta līmeņa shēmas elementi. To realizācija ir ļoti cieši sasaistīta ar paplašināmo indeksēšanu. Gadījumā, ja noteikts operators, kas ir piesaistīts problēmsfēras indeksa tipam, ir sastopams vaicājuma WHERE daļā, tad indeksācijas mehānisms, balstoties uz operatora predikātu informāciju, var optimizēt vaicājumu un iedarbināt indeksēšanas mehānismu, t.i., neveicot pilnu tabulas skenēšanu, bet gan analizējot indeksa struktūru – indeksam tiks nodota visa informācija par operatora predikāta izteiksmi, uz kā bāzes tad arī notiks attiecīgās darbības pamattabulas rindiņu izgūšanai.Lietotāju definēti operatori tiek piesaistīti noteiktai funkcijai, kura kā pirmo parametru noteikti satur objektu tipu, kuram šis operators tiek piemērots.Sākumā tiek izveidotas attiecīgās funkcijas, un tad operatori – ar CREATE OPERATOR palīdzību. Praktiskajā daļā tiks apskatīti operatoru izveide un indeksa tipa izveide problēmsfēras objektu tipa indeksēšanai.

create function SALIDZIN (a VARCHAR2, b VARCHAR2) RETURN NUMBER ASBEGIN IF a = b THEN RETURN 1; ELSE RETURN 0; END IF;END;

create operator SAL BINDING (VARCHAR2, VARCHAR2) RETURN NUMBER USING SALIDZIN;

Operators are often defined in connection with indextypes. After creating the operators with their functional implementations, you can create an indextype that supports evaluations of these operators using an index scan.

Page 29: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

29

Objektu kolonnas indeksēšanas princips

Attēlā redzams, kā pirmās trīs kolekcijas vērtības nonāk indeksa tabulā. Katrai vērtībai tiek norādīta:

1) attiecīga pozīcija kolekcijā (RPOZ);2) vērtība (RVERT);3) rindiņas identifikācijas numurs (RID).

Page 30: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

30

Oracle Data Cartridge Interface (ODCI) metodes

Indkesa metode Apraksts

ODCIGetInterfaces Atgriež interfeisa versiju realizējamajam indeksam („ODCIINDEX2” gadījumā, ja izmanto jaunākas Oracle 9i iespējas, pretējā gadījumā „ODCIINDEX1”).

ODCIIndexCreate Izveido tabulu, kur tiek glabāti indeksējamie dati, tiek izsaukta indeksa izveides laikā. Jāparedz gadījumi, kad pamattabula nav tukša.

ODCIIndexDrop Izdzēš tabulu ar indeksējamajiem datiem. Tiek izsaukta DROP INDEX vai pamattabulas dzēšanas gadījumā.

ODCIIndexAlter Atjauno indeksa tabulu, balstoties uz izmainītajiem indeksa parametriem. Tiek izsaukta ALTER INDEX gadījumā.

ODCIIndexStart Inicializē indeksa skenēšanu iepriekšdefinētam un ar indeksa tipu sasaistītam operatoram. Nodefinē kursoru vaicājumam, kas tiek konstruēts uz operatora bāzes (gadījumā, kad vaicājumā parādās operatori, kuri var tikt analizēti ar indeksa palīdzību).

ODCIIndexFetch Atgriež ROWID katrai rindiņai, kura apmierina operatora predikātu, t.i., ar indeksa palīdzību izgūstam nepieciešamās rindiņas.

ODCIIndexClose Beidz vaicājuma izpildi, aizver kursoru.ODCIIndexInsert Maina indeksa struktūru gadījumā, kad pamattabulā tiek

ievietoti dati.

ODCIIndexDelete Maina indeksa struktūru gadījumā, kad no pamattabulas tiek izdzēsti dati.

ODCIIndexUpdate Maina indeksa struktūru gadījumā, kad pamattabulā tiek atjaunoti dati.

ODCIIndexGetMetadata

Dod iespēju eksportēt un importēt ar indeksu realizāciju saistītus metadatus.

Page 31: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

31

Objekta tips indeksa tipam

Pirms tiek izveidots indeksa tips, tam ir jādefinē objekta tips, kas saturēs svarīgākās

interfeisa metodes, kuras ir nepieciešamas indeksēšanas mehānisma darbībai. Dažas

no tām ir realizētas kā STATIC, dažas kā MEMBER – tas ir atkarīgs no funkcijas

specifikācijas.

MEMBER funkcijas tiek izpildītas konkrētam eksemplāram, tām ir piekļuve visiem

objektu tipa argumentiem.

Savukārt STATIC funkcija var tikt izsaukta pat tad, ja nav izveidots objektu tipa

eksemplārs.

Objektu tips satur vienu papildus mainīgo – KURSORS (NUMBER tipa atribūts).

Šis kursors tiks izmantots, lai varētu veikt problēmsfēras indeksa skenēšanu.

Ar paketes DBMS_SQL palīdzību kursors tiks saistīts ar dinamiski izveidotu

vaicājumu, un šis kursors tiks izmantots metodēs, kas atbild par datu izgūšanu no

indeksa tabulas.

Page 32: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

32

Indeksa objekta tipa definējums (specifikācija)

create or replace type T_ENERGO_INDEKSS as object (

KURSORS number,

static function ODCIGetInterfaces(IFCLIST OUT SYS.ODCIOBJECTLIST)

return number,

static function ODCIIndexCreate (SYS.ODCIINDEXINFO, PARMS VARCHAR2,

ENV SYS.ODCIENV) RETURN NUMBER,

static function ODCIINDEXDROP(IA SYS.ODCIINDEXINFO,

ENV SYS.ODCIENV) RETURN NUMBER ,

static function ODCIINDEXSTART(SCTX IN OUT T_ENERGO_INDEKSS,

IA SYS.ODCIINDEXINFO, OP SYS.ODCIPREDINFO, QI

SYS.ODCIQUERYINFO, STRT NUMBER, STOP NUMBER, SALPOZ

NUMBER, SALVERT NUMBER, ENV SYS.ODCIENV) return number,

static function ODCIINDEXSTART(SCTX IN OUT T_ENERGO_INDEKSS,

IA SYS.ODCIINDEXINFO, OP SYS.ODCIPREDINFO, QI

SYS.ODCIQUERYINFO, STRT NUMBER, STOP NUMBER, SALVERT

NUMBER, ENV SYS.ODCIENV) return number,

MEMBER function ODCIINDEXFETCH(NROWS NUMBER,

RIDS OUT SYS.ODCIRIDLIST, ENV SYS.ODCIENV) return number,

MEMBER FUNCTION ODCIINDEXCLOSE(ENV SYS.ODCIENV) return

number,

static function ODCIINDEXINSERT(IA SYS.ODCIINDEXINFO, RID

VARCHAR2, JAUNA_V T_ENERGO_PIEPRAS, ENV SYS.ODCIENV) return

number,

static function ODCIINDEXDELETE(IA SYS.ODCIINDEXINFO, RID

VARCHAR2, VECA_V T_ENERGO_PIEPRAS, ENV SYS.ODCIENV) return

number,

static function ODCIINDEXUPDATE(IA SYS.ODCIINDEXINFO, RID

Page 33: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

33

VARCHAR2, VECA_V T_ENERGO_PIEPRAS, JAUNA_V

T_ENERGO_PIEPRAS, ENV SYS.ODCIENV) return number);

Page 34: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

34

Oracle Spatial grafisko datu apstrādes kodola paplašinājuma problēmsfēras indekss

Vviens no telpisko indeksu veidiem ir R-koka indekss. Šī indeksa darbības princips ir katras ģeometrijas aproksimācija ar tās mazāko ierobežojuma taisnstūri. Tādā veidā tiek aptverta visu ģeometriju kopa, un izveidots tādu taisnstūru koks.

Page 35: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

35

Indeksa interfeisa objektu tips saucas RTREE_INDEX_METHOD, kas satur visas nepieciešamās metodes indeksa darbības kontrolēšanai.

Page 36: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

36

Indeksa objekta tipa definējuma ķermenis (metožu definējumi)

ODCIIndexCreate ir metode:

1) izveido indeksa datiem paredzēto tabulu (create ...), kuras nosaukums tiek

izvēlēts šādā veidā: indeksa nosaukums + „_EIND”. Informācija par indeksa

nosaukumu un shēmu, kurā indeksu izveido, tiek ņemta no IA argumenta

(SYS.ODCIIndexInfo tips).

2) insert ... ievieto attiecīgās rindiņas identifikācijas numuru, reģiona

numuru un vērtību indeksa tabulā konkrētam rindiņas numuram;

3) insert ... komandai nepieciešamie dati tiek iegūti ar trešā vaicājuma palīdzību

un ir piesaistīts otrajam vaicājumam kā mainīgie.

Dinamiskajā SQL tiek aktīvi izmantoti mainīgie (par ko norāda divpunkts izteiksmes

priekšā), savukārt rindiņas ID iegūšanai un sasaistei DBMS_SQL pakotnē ir

attiecīgās metodes – COLUMN_VALUE_ROWID rindiņas numura izgūšanai, kā arī

BIND_VARIABLE_ROWID, kas piesaista dinamiskās izteiksmes mainīgajam

PL/SQL mainīgo.

Page 37: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

37

Indeksa tabulas izveide

Pamattabulas attiecīgās rindiņas numurs, kā arī reģionu vērtības ar to attiecīgajiem

numuriem tiek saglabātas indeksa tabulā, pielietojot šo operāciju katrai pamattabulas

datu rindiņai.

Page 38: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

38

static function ODCIINDEXCREATE (IA SYS.ODCIINDEXINFO,PARMS varchar2, ENV SYS.ODCIENV) return number isI INTEGER; R ROWID; P NUMBER; V NUMBER; VAIC1 VARCHAR2(1000); VAIC2 VARCHAR2(1000);VAIC3 VARCHAR2(1000); KUR1 INTEGER; KUR2 INTEGER; KUR3 INTEGER; JUNK NUMBER; BEGIN -- konstruējam SQL vaicājumu indeksa tabulas izveidošanai VAIC1 := 'CREATE TABLE ' || IA.INDEXSCHEMA || '.' || IA.INDEXNAME || '_EIND' || '( R ROWID, RPOZ NUMBER, RVERT NUMBER)';-- izvadām informācijuDBMS_OUTPUT.PUT_LINE('ODCIINDEXCREATE>>>>>');SYS.ODCIINDEXINFODUMP(IA);DBMS_OUTPUT.PUT_LINE('ODCIINDEXCREATE>>>>>'||VAIC1);-- izpildām vaicājumuKUR1 := DBMS_SQL.OPEN_CURSOR;DBMS_SQL.PARSE(KUR1, VAIC1, DBMS_SQL.NATIVE);JUNK := DBMS_SQL.EXECUTE(KUR1);DBMS_SQL.CLOSE_CURSOR(KUR1);

-- indeksa tabulas aizpildīšanas vaicājums; :RR - mainīgaisVAIC2 := ' INSERT INTO '|| IA.INDEXSCHEMA || '.' || IA.INDEXNAME || '_EIND' || ' SELECT :RR, ROWNUM, COLUMN_VALUE FROM THE' || ' (SELECT CAST (E.'|| IA.INDEXCOLS(1).COLNAME || '.REGIONU_VERTIBAS AS T_NUMTAB)' || ' FROM ' || IA.INDEXCOLS(1).TABLESCHEMA || '.' || IA.INDEXCOLS(1).TABLENAME || ' E' || ' WHERE E.ROWID = :RR)';DBMS_OUTPUT.PUT_LINE('ODCIINDEXCREATE>>>>>'||VAIC2);-- analizējam otro vaicajumu KUR2 := DBMS_SQL.OPEN_CURSOR;DBMS_SQL.PARSE(KUR2, VAIC2, DBMS_SQL.NATIVE);

Page 39: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

39

VAIC3 := 'SELECT ROWID FROM '|| IA.INDEXCOLS(1).TABLESCHEMA || '.' || IA.INDEXCOLS(1).TABLENAME; DBMS_OUTPUT.PUT_LINE('ODCIINDEXCREATE>>>>>'||VAIC3); KUR3 := DBMS_SQL.OPEN_CURSOR; DBMS_SQL.PARSE(KUR3, VAIC3, DBMS_SQL.NATIVE); DBMS_SQL.DEFINE_COLUMN_ROWID(KUR3, 1, R); JUNK := DBMS_SQL.EXECUTE(KUR3); WHILE DBMS_SQL.FETCH_ROWS(KUR3) > 0 LOOP -- iegūstam kolonnu vērtības no rindiņas DBMS_SQL.COLUMN_VALUE_ROWID(KUR3, 1, R); -- piesaista iegūto rindas numuru mainīgajam DBMS_SQL.BIND_VARIABLE_ROWID(KUR2, ':RR', R); JUNK := DBMS_SQL.EXECUTE(KUR2); END LOOP;

DBMS_SQL.CLOSE_CURSOR(KUR2); DBMS_SQL.CLOSE_CURSOR(KUR3); RETURN ODCICONST.SUCCESS; END;

Page 40: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

40

Metodes ODCIIndexStart, ODCIIndexFetch un ODCIIndexClose

Ja vaicājumā ir kāds no operatoriem WHERE daļā, kas ir sasaistīti ar konkrēto

indeksēšanas mehānismu, tad Oracle kodols var izvēlēties datus meklēt nevis

pamattabulā, veicot tās datu rindiņu pilnīgu pārlasi, bet gan griezties pie indeksēšanas

mehānisma.

Pamattabulas rindiņu identifikatoru izgūšanai tiek izmantotas ODCIIndexStart,

ODCIIndexFetch un ODCIIndexClose metodes.

1. Metode ODCIIndexStart atver kursoru speciālam vaicājumam, kurš tiek ģenerēts

uz operatora izteiksmes pamata.

2. Vaicājuma izpildes gaitā metode ODCIIndexFetch speciālā kolekcijā (kas ir viens

no ODCIIndexFetch argumentiem) tiek saglabāti pamattabulas rindiņu numuri, kas

apmierina dotā vaicājuma nosacījumus.

3. Beigās metode ODCIIndexClose aizver kursoru.

Gala rezultātā mēs iegūstam tos datu rakstus, kuru numuri tika atgriezti ar

ODCIIndexFetch metodi.

Page 41: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

41

ODCIIndexStart metodes var būt vairākas. To argumentu skaits un tips var variēt –

pēc standartargumentiem seko argumenti, kas atbilst operatoru argumentiem (bez

objektu tipa). Piemērā ir divi dažādi operatoru tipi:

1) ar diviem argumentiem (vērtība konkrētam reģionam);

2) tikai salīdzināmā energopatēriņa vērtība.

Kurš tieši operators tiek izsauks no trijiem, tiek noteikts metodes izpildes gaitā, jo

arguments OP (SYS.ODCIPREDINFO tips) satur informāciju par operatoru.

Page 42: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

42

Metodes ODCIIndexInsert, ODCIIndexUpdate un ODCIIndexDelete

Šīs trīs metodes nostrādā gluži kā trigeri datu manipulāciju gadījumā: kad dati tiek

ievadīti pamattabulā (ODCIIndexInsert), kad dati tiek atjaunoti tajā

(ODCIIndexUpdate) un kad dati tiek dzēsti no tās (ODCIIndexDelete). Ar šo metožu

palīdzību informācija tiek sinhronizēta starp pamattabulu un indeksa tabulu, lai

saturiski tās būtu ekvivalentas.

Page 43: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

43

Indeksa tipa izveide

Kad ir realizēts indeksa objektu tips, var izveidot indeksa tipu, norādot

operatorus, uz kuru pamata indeksēšanas mehānisms spēs meklēt atbilstošās

pamatdatu rindiņas identifikatorus indeksa tabulā.

create or replace indextype ENERGO_INDEKSS FORENERGO_VIENADS(T_ENERGO_PIEPRAS, NUMBER, NUMBER),ENERGO_LIELAKS(T_ENERGO_PIEPRAS, NUMBER, NUMBER),ENERGO_MAZAKS(T_ENERGO_PIEPRAS, NUMBER, NUMBER),ENERGO_VIENADS_JEBK(T_ENERGO_PIEPRAS, NUMBER),ENERGO_LIELAKS_JEBK(T_ENERGO_PIEPRAS, NUMBER),ENERGO_MAZAKS_JEBK(T_ENERGO_PIEPRAS, NUMBER)

USING T_ENERGO_INDEKSS;

Tiek norādīts atslēgvārds FOR, pēc kura tiek uzskaitīti attiecīgie problēmsfēras

operatori un to argumenti iekavās. Pirmais arguments vienmēr ir problēmsfēras datus

raksturojošs tips, kas raksturos arī indeksējamo tabulas kolonnu. Pēc tam seko pārējo

argumentu tipi, kas tad arī nosaka metožu ODCIIndexStart skaitu.

Page 44: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

44

Paplašināmais optimizators

Ar paplašināmā optimizatora palīdzību ir iespējams:1) sasaistīt izmaksu funkcijas ar problēmsfēru indeksiem, indeksu tipiem, pakotnēm, kā arī atsevišķām funkcijām; optimizators var novērtēt problēmsfēras indeksa skenēšanas izmaksas;2) asociēt selektivitātes funkcijas ar objektu tipu metodēm, pakotņu funkcijām vai arī atsevišķām funkcijām;3) asociēt statistikas kolekcionēšanas funkcijas ar problēmsfēras indeksiem un tabulu kolonnām;4) kārtot predikātus ar funkcijām, balstoties uz izmaksām;5) izvēlēties lietotāja definētu pieejas metodi (problēmsfēras indeksi) tabulai, balstoties uz piekļuves izmaksām;6) izmantot speciālu DBMS_STATS pakotni ar nolūku izsaukt lietotāja definētas statistikas kolekcionēšanas un dzēšanas funkcijas;7) izmantot jaunus datu vārdnīcas skatus, lai iekļautu informāciju par statistikas kolekcionēšanu, izmaksu, vai selektivitātes funkcijām, kas tiek asociētas ar kolonnām, problēmsfēras indeksiem, indeksu tipiem vai funkcijām;8) pievienot padomus (hints) ar nolūku ietekmēt funkciju predikātu izskaitļošanas kārtību.

Page 45: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

45

Vaicājumu optimizēšana ir visefektīvākā SQL vaicājuma ceļa izvēles process. Paplašināmais optimizators dod iespēju lietotāju definētu funkciju un indeksu autoriem izveidot statistikas kolekcionēšanas, selektivitātes, kā arī izmaksu funkcijas, kuras izmanto optimizators, izvēloties vaicājuma plānu. Optimizatora izmaksu modelis tiek paplašināts, lai integrētu lietotāja nodrošinātu informāciju par procesora un ievades/izvades izmaksām, kur procesora izmaksas pēc būtības ir izmantoto datora instrukciju skaits, bet ievades/izvades izmaksas ir apstrādāto datu bloku skaits.Ar paplašināmā optimizatora palīdzību ir iespējams: sasaistīt izmaksu funkcijas ar problēmsfēru indeksiem, indeksu tipiem, pakotnēm, kā arī atsevišķām funkcijām; optimizators var novērtēt problēmsfēras indeksa skenēšanas izmaksas (Oracle 10g versijā iespējams vērtēt arī atsevišķu partīciju skenēšanas izmaksas dalītu tabulu gadījumā); asociēt selektivitātes funkcijas ar objektu tipu metodēm, pakotņu funkcijām vai arī atsevišķām funkcijām; asociēt statistikas kolekcionēšanas funkcijas ar problēmsfēras indeksiem un tabulu kolonnām; kārtot predikātus ar funkcijām, balstoties uz izmaksām; izvēlēties lietotāja definētu pieejas metodi (problēmsfēras indeksi) tabulai, balstoties uz piekļuves izmaksām; izmantot speciālu DBMS_STATS pakotni ar nolūku izsaukt lietotāja definētas statistikas kolekcionēšanas un dzēšanas funkcijas; izmantot jaunus datu vārdnīcas skatus, lai iekļautu informāciju par statistikas kolekcionēšanu, izmaksu, vai selektivitātes funkcijām, kas tiek asociētas ar kolonnām, problēmsfēras indeksiem, indeksu tipiem vai funkcijām; pievienot padomus (hints) ar nolūku ietekmēt funkciju predikātu izskaitļošanas kārtību.

Optimizators ģenerē izpildes plānu SQL un datu manipulācijas valodas vaicājumiem – SELECT, INSERT, UPDATE, vai arī DELETE izteiksmēm.

Izpildes plāns iekļauj pieejas metodi katrai tabulai no FROM daļas, un kārtu, kas tiek saukta par apvienošanas kārtu, tabulām no FROM daļas. Sistēmas definētas pieejas metodes iekļauj indeksus, hešu klasterus un tabulas skenēšanu. Optimizators izvēlas plānu, ģenerējot apvienošanas kārtas kopu (permutācijas), izskaitļojot katras izmaksas, un tad izvēloties procesu ar zemākajām izmaksām. Katrai apvienošanas kārtas tabulai

Page 46: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

46

optimizators izskaitļo katras iespējamās piekļuves un apvienošanas metodes izmaksas, pēc tam izvēlas to, kurai ir zemākās izmaksas. Apvienošanas kārtas izmaksas ir pieejas un apvienošanas metožu izmaksu summa. Izmaksas izskaitļo ar algoritmu palīdzību, kas kopā ietver izmaksu modeli. Izmaksu modelis iekļauj sevī mainīgu detalizācijas līmeni par fizisko vidi, kurā vaicājums tiek izpildīts. Attēlā redzama izmaksu optimizatora (IO) darbība vaicājuma laikā: no iespējamajiem ceļiem (C1, C2, C3 un C4) tiek izvēlēts tas ceļš, kura izmaksas (I) ir minimālas; rezultātā izmaksu optimizators ietekmē apvienošanas kārtu, t.i., kādā secībā tiks apskatītas tabulas no WHERE daļas, kā arī pieejas metodes – kādā veidā dati tiks atlasīti no katras tabulas. Ar padomu (hints) palīdzību var tiešā veidā ietekmēt funkciju predikātu izskaitļošanas kārtību.

Lietotāja definētajiem operatoriem un problēmsfēras indeksiem paplašināmais optimizators dod iespēju kontrolēt trīs pamatkomponentes, kuras tiek izmantotas, izvēloties vaicājuma izpildes plānu: statistiku, selektivitāti un izmaksas.

Page 47: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

47

Statistika

Optimizators izmanto statistiku par vaicājumā minētajiem objektiem, lai izskaitļotu selektivitāti un izmaksas, tātad, tas ir rīks, kas nodrošina papildinformāciju par problēmsfēras objektiem. Realizējot paplašināmā optimizatora metodes, statistikai tiek paredzēta metode ODCIStatsCollect, ar kuras palīdzību tiks savākta statistika par noteikta tipa kolonnu (parasti saista ar problēmsfēras tipa kolonnu, kas tiek indeksēta). Tas, ko tieši veic šī metode, nav zināms. Taču tās savāktā informācija kalpos par pamatu selektivitātes un izmaksu analīzei.Šī metode tiek izmantota tajā gadījumā, ja statistika tiek asociēta ar noteiktu tabulas kolonnu, un vēlāk izsaukta ANALYZE komanda – kā tas ir redzams attēlā.

Statistika tiek asociēta ar noteiktu kolonnu, izmantojot ODCIStatsTips objektu tipu, kuram noteikti jārealizē ODCIStatsCollect metodi analizējamās kolonnas tipam.

Page 48: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

48

Selektivitāte

Optimizators izmanto statistiku, lai izskaitļotu predikātu selektivitāti. Predikāta selektivitāte ir ar predikātu izgūstamo rindiņu skaita dalījums ar kopējo rindiņu skaitu (līdz ar to tas ir skaitlis no intervālā [0; 1]). Praktiskajā daļā izmantotajam piemēram varētu izveidot statistikas savākšanas funkciju, kas vienkārši katram reģionam atrastu minimālo un maksimālo vērtību. Balstoties uz šo informāciju, varētu aptuveni novērtēt, cik procentuāli daudz rindiņu tiks izgūtas, ja tiks meklēta noteikta vērtība. Dažos gadījumos tas var nodrošināt izvairīšanos no datu pārlases. Ja mēs atlasām datus, izvēloties tās datu rindiņas, kurām noteikta reģiona vērtība ir vienāda ar prasīto vērtību, bet prasītā vērtība neietilpst intervālā starp minimālo un maksimālo vērtību, tad, neapšaubāmi, selektivitāte tādam predikātam būs vienāda ar 0,- neviena datu rindiņa neapmierinās predikāta vērtību. Selektivitāte palīdz izvēlēties optimālo apvienošanas kārtu, un piekļuves metodes, balstoties uz WHERE daļā norādītajiem predikātiem.

Page 49: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

49

Izmaksas

Optimizators novērtē dažādu piekļuves ceļu izmaksas, lai izvēlētos optimālo plānu. Piemēram, tas var izskaitļot indeksa izmantošanas un pilnas tabulas skenēšanas izmaksas, lai varētu izvēlēties starp šīm divām pieejas metodēm. Kodola paplašinājuma definēto problēmsfēras indeksu gadījumā optimizators nezin neko par indeksu iekšējo glabāšanas struktūru. Tādā veidā optimizators nevar precīzi izvērtēt tādu indeksu izmantošanas izmaksas. Tāpat optimizators pēc noklusējuma nezin neko par lietotāja funkciju procesora resursu patēriņu. Funkcijas var arī patērēt ievada/izvades resursus, gadījumā ja tā apstrādā lielo objektu eksemplāruLai varētu veikt tāda veida analīzi, paplašināmais optimizators realizē noteiktas funkcijas, ar kuru palīdzību tiek noteiktas lietotāju definēto funkciju un problēmsfēras indeksu izmantošanas izmaksas.Lietotāja definētās izmaksu funkcijas var atgriezt trīs parametrus, kas raksturo lietotāja funkcijas vai problēmsfēras indeksa izmantošanas resursu ietilpību: cpu – datora instrukciju skaits, kuras izpilda funkcija vai indeksa implementācija; i/o – problēmsfēras indeksa vai funkcijas nolasīto datu bloku skaits network – pārraidīto bloku skaits tīklā.

Page 50: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

50

Paplašināmā optimizatora interfeisa metožu raksturojumi

Metode AprakstsODCIStatsCollect Metode statistikas savākšanai kolonnai vai

indeksa datiem.ODCIStatsDelete Izdzēš statistiku par kolonnu vai indeksa datiem.ODCIStatsSelectivity Novērtē lietotāja definētu funkcijas vai operatora

predikāta selektivitāti.ODCIStatsFunctionCost Balstoties uz uzdotajiem funkcijas parametriem,

izskaitļo funkcijas izpildes izmaksas.ODCIStatsIndexCost Balstoties uz uzdoto operatora predikātu,

izskaitļo problēmsfēras indeksa skenēšanas izmaksas.

Page 51: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

51

Vaicājumu izpildeIndeksa mehānisms tiek iedarbināts gadījumā, kad vaicājuma WHERE daļā parādās

noteikts salīdzināšanas operators, kas norāda, pēc kādiem kritērijiem dati tiek

atlasīti. Problēmsfēras indeksa gadījumā tiek izsauktas indeksa metodes

ODCIIndexStart, ODCIIndexFetch un ODCIIndexClose, ar kuru palīdzību tiek

izskatīta indeksa tabula un atgrieztas vajadzīgās rindiņas.

Ja vaicājums tiek veikts bez problēmsfēras indeksa operatoriem WHERE daļā, tad

vaicājuma izpildes plānā redzams, ka Oracle veic pilnu piekļuvi pamattabulai –

TABLE ACCESS FULL, ko var novērot, analizējot vaicājuma izpildes plānu.

Ja tiek veikts vaicājums, kura WHERE daļā parādās kāds no problēmsfēras

operatoriem, kas ir saistīts ar indeksa tipu, izpildes plāns norāda, ka datu atlase notiek

no indeksa tabulas EINDEKSS_EIND.

Page 52: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

52

Lietotāja definētas agregātfunkcijas

Oracle nodrošina lietotāju ar noteiktām visiem labi zināmām agregātfunkcijām MAX, MIN, SUM u.c., kas veic operācijas ar rindiņu kopām. Šīs definētās agregātfunkcijas var tikt izmantotas tikai skalāriem datiem. Taču bieži rodas vajadzība definēt kādu jaunu funkciju datu analīzei, vai arī agregātfunkciju, kas darbotos ar sarežģītiem – lietotāja definētajiem datiem, līdz ar to realizējot ar problēmsfēru saistīto loģiku.Lietotāju definētas agregātfunkcijas, analoģiski paplašināmās indeksācijas mehānismam un paplašināmajam optimizatoram, tiek reģistrētas serverī ar interfeisu palīdzību; šajā gadījumā tas ir ODCIAggregate interfeiss, kuram ir paredzētas metodes agregācijas uzsākšanai (ODCIAggregateInititalize), agregācijas solim (ODCIAggregateIterate), kā arī agregācijas nobeigšanai (ODCIAggregateTerminate).

Lietotāja definētas agregātfunkcijas var piemērot jebkura tipa datiem, līdz ar to arī skalārajiem datiem tas varētu būt ļoti noderīgs rīks, piem., strādājot ar sarežģītiem finansiāliem vai zinātniskiem statistikas datiem.

Efektivitātes apsvērumu dēļ agregātfunkcijas cikli bieži vien tiek izpildīti paralēli. T.i., vienas datu kopas dažādiem apgabaliem var tikt piemērota vien un tā pati agregātfunkcija, bet vēlāk to rezultāti apvienoti attiecīgā veidā. Piem., ja tā ir summa, tad tiek saskaitīta paralēlajos procesos iegūtās summas. Ja tā ir mazākās vērtības, tad rezultāts ir mazākā vērtība no paralēlajiem procesiem. Shematiski tādas agregātfunkcijas darbība ir parādīta . attēlā.Kā redzams, pirms cikla nobeigšanas jāizpildās apvienojuma funkcijai. Tādu agregātfunkciju realizētajā objektu tipā ir papildus funkcija – ODCIAggregateMerge, kura veic apvienošanas funkcijas.

Page 53: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

53

Paralēlās agregātfunkcijas darbības shēma

Agregātfunkciju interfeisa metožu raksturojumiMetode AprakstsODCIAggregateInitialize Šo metodi Oracle izsauc, lai inicializētu

lietotāja definētu agregātfunkciju skaitļošanas procesu. Inicializēta agregāta konteksts tiek nodots Oracle kā objektu tipa eksemplārs (kas var saturēt agregātvērtības skaitļošanai nepieciešamos atribūtus)

ODCIAggregateIterate Metode tiek atkārtoti izsaukta katrai agregātfunkcijā pielietotajai vērtībai, kas tiek nodota funkcijai kā arguments. Arī ar šo agregātvērtības skaitļošanas sesiju saistītais objektu tips (konteksts) tiek nodots kā arguments. Rezultātā funkcija apstrādā jauno vērtību(as), un atgriež DBVS atjaunoto kontekstu. Jāpiebilst, ka NULL vērtības netiek apstrādātas.

ODCIAggregateMerge Metodi Oracle izsauc paralēlās agregātfunkciju skaitļošanas gadījumā. Tā kombinē divus agregāciju kontekstus un atgriež galīgo rezultātu.

ODCIAggregateTerminate Metode tiek izsaukta agregācijas pēdējā solī. Metode atgriež rezultāta vērtību, balstoties uz agregācijas kontekstu.

Page 54: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

54

Abstraktās tabulas un tabulu funkcijas

Kodola paplašinājuma izstrādātājam var rasties vajadzība piekļūt datiem, kas ir ārpus datu bāzes vai arī atrodas lielo objektu eksemplāros. Tādos gadījumos DBVS nezin neko par šo datu struktūru, pat ja tie ir noteiktā veidā strukturēti.

Šajā gadījumā ir iespējams rīkoties divos veidos:1. izveidot abstrakto tabulu;2. vaicājumos izmantot tabulu funkciju.

Abstraktā tabula tiek interpretēta kā parastā, taču par to saturu, kas pēc būtības ir virtuāls, atbild noteikts objektu tips, kas realizē ODCITable interfeisu. Tipisks gadījums varētu būt kāds fails failu sistēmā, piem., XML fails, kura struktūra nav zināma datu bāzei, bet tajā glabājas noteikti tabulāri interpretējami dati.

Abstrakto tabulu interfeisa metožu raksturojumiMetode AprakstsODCITableStart Uzsāk virtuālo tabulas izskatīšanu.ODCITableFetch Atgriež rindiņu kopu kārtējā solī.ODCITableClose Veic nobeigšanas procedūras, kad datu

izgūšana ir beigusies.Vizuāli šo metožu darbību raksturo Error: Reference source not found attēls. Kā redzams, abstrakto tabulu darbības princips ir līdzīgs kursoriem – kamēr rezultāts nav NULL, notiek izgūstamo datu apstrāde (t.i., tā tiek interpretēta kā virtuāla tabula). Savukārt, kad šis process beidzas, ar ODCITableClose metodes palīdzību tiek veikti nobeigšanas darbi (piem., aizvērti datu bāzes kursori vai arī attīrītas temporālās struktūras vai arī tabulas).

Page 55: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

55

ODCITable interfeisa metožu darbības shēma

Rezultātā lietotāja dati tiek interpretēti tabulas veidā, un tālākā darbība ar tādu tabulu norit gluži kā ar parastu. Ja ir vajadzība datus papildināt vai izdzēst (kas, protams, virtuālās tabulas gadījumā nav iespējams), tad var veidot uz tādas tabulas balstītu skatu un realizēt INSTEAD OF trigeri, kas imitēs datu ierakstīšanu šajā tabulā vai dzēšanu no tās (t.i., darbosies ar datu avotu).

Abstraktās tabulas izveidošanas piemērs ir skatāms Error: Referencesource not found. attēlā.

Tagad, griežoties pie abstraktās tabulas, iteratīvai rindiņu izgūšanai tiks pielietotas ODCITableTips objektu tipa metodes, attiecīgi Error: Referencesource not found. attēlā redzamajai shēmai.Kodola paplašinājuma izstrādātājam var parādīties vajadzība pēc dinamiskas, iteratīvas uzvedības pār virtuāli izveidotajām tabulām. Paplašināšanas arhitektūra tāpat nodrošina iteratīvas tabulu funkcijas kā papildinājumu abstraktām tabulām.Tabulu funkcijas ir tādas funkcijas, kas rezultātā izdod rindiņu kolekciju (vai nu iekļautu tabulu vai arī VARRAY – mainīga izmēra masīvu) ar nolūku veikt vaicājumus šai datu kopai, analoģiski fiziskajai datu bāzes

Page 56: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

56

tabulai. Tabulu funkcija var tikt izmantota gluži kā datu bāzes tabulas nosaukums vaicājuma FROM daļā.

Tādas funkcijas ir bieži noderīgas datu interpretācijai, jo kā argumentus var pieņemt gan kolekciju tipu, gan arī kursora mainīgo (REF CURSOR). Taču pēc būtības tās ir ļoti līdzīgas abstraktajām tabulām – tās tiek piesaistītas ODCITable interfeisa metodes realizējošam objektu tipam.

Atkarībā no tā, vai noteiktu virtuālu datu izgūšanā ir nepieciešamība norādīt parametrus, jāizvēlas attiecīgais veids, kā šo izgūšanu realizēt – vai nu abstraktās tabulas (kuros vai nu netiek norādīti nekādi parametri, vai arī tie tiek norādīti tabulas izveidošanas brīdī), vai arī tabulu funkcijas (kurās ik reizes var norādīt dažādus parametrus).

Page 57: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

57

Data cartridges

Data cartridges extend the capabilities of the Oracle server by taking advantage of Oracle Extensibility Architecture framework. This framework lets you capture business logic and processes associated with specialized or domain-specific data in user-defined datatypes. You can customize the indexing and query optimization mechanisms of an extensible database management system and provide specialized services or more efficient processing for user-defined business objects and rich types. When you register your implementations with the server through extensibility interfaces, you direct the server to implement your customized processing instructions instead of its own default processes.The extensibility interfaces consist of functions that the server calls to execute the custom indexing or optimizing behavior implemented for a data cartridge. The interfaces are defined by Oracle; as a cartridge developer, you must implement the functions or interfaces that have the specialized behavior you require in your application. In general, you implement the functions as static methods of an object type. An object type that implements the extensible indexing interface is called an indextype; an object type that implements the extensible optimizing interface is called a statistics type.Data cartridges have the following key characteristics: Data cartridges are server-based. Their constituents reside on the server or are accessed from the server. The server runs all data cartridge processes, or dispatches these processes as external procedures. Data cartridges extend the server. They define new types and behavior, enabling the server to perform processes that were are otherwise unavailable to it, in component form. Data cartridges can use these new types and behaviors in their applications. Data cartridges are integrated with the server. The Oracle Extensibility Framework defines a set of interfaces that integrate data cartridges with the components of the server engine, allowing for domain-specific indexing, domain-specific optimized access to the the CPU resources, and domain-specific optimization of I/O access to cartridge data.

Page 58: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

58

Data cartridges are packaged. A data cartridge is installed as a unit. Once installed, the data cartridge handles all access issues for each user, including verification of schemas and privileges.Extensibility Interfaces

DBMS InterfacesThe DBMS interfaces offer the simplest kind of extensibility services. They can be used through extensions to SQL or to the Oracle Call Interface (OCI). For example, the extensible type manager uses the CREATE TYPE syntax in SQL. Similarly, extensible indexing uses DDL and DML support for specifying and manipulating indexes.

Cartridge Basic Service InterfacesCartridge basic interfaces provide generic services like memory management, context management, internationalization, and cartridge-specific management. They implement behavior for new datatypes in the context of the server's execution environment and provide routines that help developers to implement portable and robust server-side methods.

Data Cartridge InterfacesWhen processing user-defined indextypes, Oracle calls data cartridge functions to perform index search or fetch operations. For user-defined query optimization, the query optimizer calls functions implemented by the data cartridge to compute the cost of user-defined operators or functions.

Page 59: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

59

Page 60: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

60

Kodola paplašināšanas process

Problēmu vides analīze

Nepieciešamo objektu noteikšana

Objektu tipu definēšana ar SQL un PL/SQL

Nepieciešamās metodes problēmu vidē

IndekssEksistējošs

indekssJauna indeksa tipa definēšana

multi-domain

Indeksa definēšana

Eksistējošā optimizatora lietošana

Optimizatora paplašināšana

Testēšana

Scenāriju komandu izpilde

Izmaksas

Page 61: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

61

The database components that make up each cartridge must be installed in a schema that has the same name as the cartridge. If a cartridge uses multiple schemas, the first 10 characters of each schema name must be the same as the cartridge name. Note that the length of schema names in Oracle is limited to 30 bytes, or 30 characters in a single-byte language.

The database components of a data cartridge that must be placed in the cartridge schema include names for types, tables, views, directories, libraries and packages. Because the schema name and username are always the same in Oracle, the choice of a schema name determines the username.

Page 62: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

62

Data cartridge komponenšu veidošana

1. Objektu tipu definēšana.2. Implementing Data Cartridges in PL/SQL3. Implementing Data Cartridges in C, C++ and Java4. Working with Multimedia Datatypes5. Using Extensible Indexing6. Building Domain Indexes7. Defining Operators8. Using Extensible Optimizer9. User-Defined Aggregate Functions10. Using Cartridge Services11.Using Pipelined and Parallel Table Functions12. Designing Data Cartridges

Page 63: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

63

3. Implementing Data Cartridges in C, C++ and Java

To support such special-purpose processing, PL/SQL provides an interface for calling routines written in other languages. This makes the strengths and capabilities of 3GLs like C available through calls from a database server. Such a 3GL routine, called an external procedure, is stored in a shared library, registered with PL/SQL, and called from PL/SQL at runtime to perform special-purpose processing.

External ProceduresUsing Shared LibrariesRegistering an External ProcedureHow PL/SQL Calls an External ProcedureConfiguration Files for External ProceduresDoing CallbacksCommon Potential ErrorsDebugging External ProceduresGuidelines for Using External Procedures with Data CartridgesJava Methods

Page 65: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

65

Example: A Text Indextype

Defining the IndextypeThe order in which you create the components of an indextype depends on whether or not you are creating an index-based functional implementation.

Non-Index-Based Functional ImplementationsTo define the Text indextype, the indextype designer must:1. Define and code the functional implementation for the supported operatorThe Text indextype supports an operator called Contains, which accepts a text value and a key, and returns a number indicating whether the text contains the key. The functional implementation of this operator is a regular function defined as:CREATE FUNCTION TextContains(Text IN VARCHAR2, Key IN VARCHAR2)RETURN NUMBER ASBEGIN.......END TextContains;

2. Create the new operator and bind it to the functional implementationCREATE OPERATOR ContainsBINDING (VARCHAR2, VARCHAR2) RETURN NUMBER USING TextContains;

3. Define a type that implements the index interface ODCIIndexThis involves implementing routines for index definition, index maintenance, and index scan operations. Oracle calls:o The index definition routines (ODCIIndexCreate, ODCIIndexAlter, ODCIIndexDrop, ODCIIndexTruncate) to perform the appropriate operations when the index is created, altered, or dropped, or the base table is truncatedo The index maintenance routines (ODCIIndexInsert, ODCIIndexDelete, ODCIIndexUpdate) to maintain the text index when table rows are inserted, deleted, or updatedo The index scan routines (ODCIIndexStart, ODCIIndexFetch, ODCIIndexClose) to scan the text index and retrieve rows of the base table that satisfy the operator predicateCREATE TYPE TextIndexMethods(STATIC FUNCTION ODCIIndexCreate(...)...);CREATE TYPE BODY TextIndexMethods(...);

4. Create the Text indextype schema objectThe indextype definition specifies the operators supported by the new indextype and the type that implements the index interface.CREATE INDEXTYPE TextIndexTypeFOR Contains(VARCHAR2, VARCHAR2)USING TextIndexMethods;

Page 66: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

66

Index-Based Functional Implementations

If you are creating an index-based functional implementation, you perform the same operations as for non-index-based functional implementations, but in a different order:1. Define the implementation type2. Define and code the functional implementation3. Create the operator4. Create the indextypeThis order is required because definition of an index-based functional implementation requires the implementation type as a parameter.

Using the IndextypeWhen the Text indextype presented in the previous section has been defined, users can define text indexes on text columns and use the Contains operator to query text data.Suppose the Employees table is defined by the statement:CREATE TABLE Employees(name VARCHAR2(64), id INTEGER, resume VARCHAR2(2000));

To build a text domain index on the resume column, a user issues the following statement:CREATE INDEX ResumeIndex ON Employees(resume) INDEXTYPE IS TextIndexType;

To query the text data in the resume column, users issue statements like:SELECT * FROM Employees WHERE Contains(resume, 'Oracle') =1;

The query execution uses the text index on resume to evaluate the Contains predicate.

Page 67: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

67

6. Building Domain Indexes

A domain index is an index designed for a specialized domain, such as spatial or image processing. Users can build a domain index of a given type after the designer creates the indextype.Indextypes encapsulate search and retrieval methods for complex domains such as text, spatial, and image processing. An indextype is similar to the indexes that are supplied with the Oracle server. The difference is that you provide the application software that implements the indextype.

An indextype has two major components:1) The methods that implement the behavior of the indextype, such as creating and scanning the index2) The operators that the indextype supports, such as Contains or Overlaps

To create an indextype:1) Define the supported operators and create the functions that implement them2) Create the methods that implement the ODCIIndex interface, and define the type that encapsulates them, called the implementation type3) Create the indextype, specifying the implementation type and listing the operators with their bindings

Page 68: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

68

7. Defining Operators

An operator binding associates the operator with the signature of a function that implements the operator. A signature consists of a list of the datatypes of the arguments of the function, in order of occurrence, and the function's return type. Operator bindings tell Oracle which function to execute when the operator is invoked. An operator can be bound to more than one function if each function has a different signature. To be considered different, functions must have different argument lists. Functions whose argument lists match, but whose return datatypes do not match, are not considered different and cannot be bound to the same operator.

create function SALIDZIN (a VARCHAR2, b VARCHAR2) RETURN NUMBER ASBEGIN IF a = b THEN RETURN 1; ELSE RETURN 0; END IF;END;

create operator SAL BINDING (VARCHAR2, VARCHAR2) RETURN NUMBER USING SALIDZIN;

Operators are often defined in connection with indextypes. After creating the operators with their functional implementations, you can create an indextype that supports evaluations of these operators using an index scan.

Page 69: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

69

8. Paplašināmais optimizators

Ar paplašināmā optimizatora palīdzību ir iespējams:1) sasaistīt izmaksu funkcijas ar problēmsfēru indeksiem, indeksu tipiem, pakotnēm, kā arī atsevišķām funkcijām; optimizators var novērtēt problēmsfēras indeksa skenēšanas izmaksas;2) asociēt selektivitātes funkcijas ar objektu tipu metodēm, pakotņu funkcijām vai arī atsevišķām funkcijām;3) asociēt statistikas kolekcionēšanas funkcijas ar problēmsfēras indeksiem un tabulu kolonnām;4) kārtot predikātus ar funkcijām, balstoties uz izmaksām;5) izvēlēties lietotāja definētu pieejas metodi (problēmsfēras indeksi) tabulai, balstoties uz piekļuves izmaksām;6) izmantot speciālu DBMS_STATS pakotni ar nolūku izsaukt lietotāja definētas statistikas kolekcionēšanas un dzēšanas funkcijas;7) izmantot jaunus datu vārdnīcas skatus, lai iekļautu informāciju par statistikas kolekcionēšanu, izmaksu, vai selektivitātes funkcijām, kas tiek asociētas ar kolonnām, problēmsfēras indeksiem, indeksu tipiem vai funkcijām;8) pievienot padomus (hints) ar nolūku ietekmēt funkciju predikātu izskaitļošanas kārtību.

Page 70: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

70

Paplašināmā optimizatora interfeisa metožu raksturojumiMetode Apraksts

ODCIStatsCollect Metode statistikas savākšanai kolonnai vai indeksa datiem.

ODCIStatsDelete Izdzēš statistiku par kolonnu vai indeksa datiem.

ODCIStatsSelectivity Novērtē lietotāja definētu funkcijas vai operatora predikāta

selektivitāti.

ODCIStatsFunctionCost Balstoties uz uzdotajiem funkcijas parametriem, izskaitļo

funkcijas izpildes izmaksas.

ODCIStatsIndexCost Balstoties uz uzdoto operatora predikātu, izskaitļo

problēmsfēras indeksa skenēšanas izmaksas.

Page 71: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

71

9. Lietotāja definētas agregātfunkcijas

Oracle nodrošina lietotāju ar noteiktām visiem labi zināmām agregātfunkcijām MAX, MIN, SUM u.c., kas veic operācijas ar rindiņu kopām. Šīs definētās agregātfunkcijas var tikt izmantotas tikai skalāriem datiem. Taču bieži rodas vajadzība definēt kādu jaunu funkciju datu analīzei, vai arī agregātfunkciju, kas darbotos ar sarežģītiem – lietotāja definētajiem datiem, līdz ar to realizējot ar problēmsfēru saistīto loģiku.

Lietotāju definētas agregātfunkcijas, analoģiski paplašināmās indeksācijas mehānismam un paplašināmajam optimizatoram, tiek reģistrētas serverī ar interfeisu palīdzību. Tas ir:

1) ODCIAggregateInititalize interfeiss, kurš ir paredzētas metodes agregācijas uzsākšanai;

2) agregācijas solim ODCIAggregateIterate;3) agregācijas nobeigšanai ODCIAggregateTerminate.

Lietotāja definētas agregātfunkcijas var piemērot jebkura tipa datiem, līdz ar to arī skalārajiem datiem tas varētu būt ļoti noderīgs rīks, piem., strādājot ar sarežģītiem finansiāliem vai zinātniskiem statistikas datiem.

Page 72: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

72

Agregātfunkciju interfeisa metožu raksturojumi

Metode Apraksts

ODCIAggregateInitialize Šo metodi Oracle izsauc, lai inicializētu lietotāja definētu

agregātfunkciju skaitļošanas procesu. Inicializēta agregāta

konteksts tiek nodots Oracle kā objektu tipa eksemplārs

(kas var saturēt agregātvērtības skaitļošanai nepieciešamos

atribūtus)

ODCIAggregateIterate Metode tiek atkārtoti izsaukta katrai agregātfunkcijā

pielietotajai vērtībai, kas tiek nodota funkcijai kā

arguments. Arī ar šo agregātvērtības skaitļošanas sesiju

saistītais objektu tips (konteksts) tiek nodots kā

arguments. Rezultātā funkcija apstrādā jauno vērtību(as),

un atgriež DBVS atjaunoto kontekstu. Jāpiebilst, ka

NULL vērtības netiek apstrādātas.

ODCIAggregateMerge Metodi Oracle izsauc paralēlās agregātfunkciju

skaitļošanas gadījumā. Tā kombinē divus agregāciju

kontekstus un atgriež galīgo rezultātu.

ODCIAggregateTerminat

e

Metode tiek izsaukta agregācijas pēdējā solī. Metode

atgriež rezultāta vērtību, balstoties uz agregācijas

kontekstu.

You create a user-defined aggregate function by implementing a set of routines collectively known as the ODCIAggregate routines. You can implement these routines as methods within an object type, so the implementation can be in any language that Oracle supports, PL/SQL, C, C++ or Java. Once the object type is defined and the routines are implemented in the type body, use the CREATE FUNCTION statement to create the aggregate function.

Page 73: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

73

Consider the aggregate function AVG() in the following statement:

SELECT AVG(T.Sales)FROM AnnualSales TGROUP BY T.State;To perform this computation, the aggregate function AVG() goes through steps like these:1. Initializes the computation by initializing the aggregation context—the rows over which aggregation is performed:runningSum = 0; runningCount = 0;2. Iteratively processes each successive input value and updates the context:runningSum += inputval; runningCount++;3. [Optional] Merge by combining the two aggregation contexts and return a single context. This operation combines the results of aggregation over subsets in order to obtain the aggregate over the entire set. This extra step can be required during either serial or parallel evaluation of an aggregate. If needed, it is performed before the Terminate step:runningSum = runningSum1 + runningSum2;runningCount = runningCount1 + runningCount24. Terminates by computing the result; uses the context to return the resultant aggregate value:return (runningSum/runningCount);

Page 74: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

74

10. Abstraktās tabulas un tabulu funkcijas

Kodola paplašinājuma izstrādātājam var rasties vajadzība piekļūt datiem,

kas ir ārpus datu bāzes vai arī atrodas lielo objektu eksemplāros. Tādos

gadījumos DBVS nezina neko par šo datu struktūru, pat ja tie ir noteiktā

veidā strukturēti. Šajā gadījumā ir iespējams rīkoties divos veidos:

3. izveidot abstrakto tabulu;

4. vaicājumos izmantot tabulu funkciju.

Abstraktā tabula tiek interpretēta kā parastā, taču par to saturu, kas pēc

būtības ir virtuāls, atbild noteikts objektu tips, kas realizē ODCITable

interfeisu. Tipisks gadījums varētu būt kāds fails failu sistēmā, piem.,

XML fails, kura struktūra nav zināma datu bāzei, bet tajā glabājas tabulāri

interpretējami dati.

Abstrakto tabulu interfeisa metožu raksturojumi

Metode Apraksts

ODCITableStart Uzsāk virtuālo tabulas izskatīšanu.

ODCITableFetch Atgriež rindiņu kopu kārtējā solī.

ODCITableClose Veic nobeigšanas procedūras, kad datu izgūšana ir

beigusies.

Page 75: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

75

Abstrakto tabulu darbības princips ir līdzīgs kursoriem – kamēr rezultāts

nav NULL, notiek izgūstamo datu apstrāde (t.i., tā tiek interpretēta kā

virtuāla tabula). Savukārt, kad šis process beidzas, ar ODCITableClose

metodes palīdzību tiek veikti nobeigšanas darbi (piem., aizvērti datu bāzes

kursori vai arī attīrītas temporālās struktūras vai arī tabulas).

ODCITable interfeisa metožu darbības shēma

Rezultātā lietotāja dati tiek interpretēti tabulas veidā, un tālākā darbība ar

tādu tabulu norit gluži kā ar parastu. Ja ir vajadzība datus papildināt vai

izdzēst (kas, protams, virtuālās tabulas gadījumā nav iespējams), tad var

veidot uz tādas tabulas balstītu skatu un realizēt INSTEAD OF trigeri, kas

imitēs datu ierakstīšanu šajā tabulā vai dzēšanu no tās (t.i., darbosies ar

datu avotu).

Kodola paplašinājuma izstrādātājam var parādīties vajadzība pēc dinamiskas, iteratīvas uzvedības pār virtuāli izveidotajām tabulām. Paplašināšanas arhitektūra tāpat nodrošina iteratīvas tabulu funkcijas kā papildinājumu abstraktām tabulām.

Page 76: RĪGAS TEHNISKĀ UNIVERSITĀTE - · Web viewJan 01, 2006 · Classification of extensibility ... The extensibility interfaces consist of functions that the server calls to execute

76

11. Using Pipelined and Parallel Table Functions

Table functions are functions that produce a collection of rows (either a nested table or a varray) that can be queried like a physical database table. You use a table function like the name of a database table, in the FROM clause of a query.A table function can take a collection of rows as input. An input collection parameter can be either a collection type or a REF CURSOR.Execution of a table function can be parallelized, and returned rows can be streamed directly to the next process without intermediate staging. Rows from a collection returned by a table function can also be pipelined—that is, iteratively returned as they are produced instead of in a batch after all processing of the table function's input is completed.