Array DBMS: Difference between revisions

Content deleted Content added
m WPCleaner v1.15 - Repaired 2 links to disambiguation page - (You can help) - Array, Hdf
FrescoBot (talk | contribs)
m Bot: fixing section wikilinks and minor changes
Line 33:
A first declarative query language suitable for multiple dimensions and with an algebra-based semantics has been published by [[Peter Baumann (computer scientist)|Baumann]], together with a scalable architecture.<ref>Baumann, P.: [http://www.informatik.uni-trier.de/~ley/db/journals/vldb/vldb3.html#Baumann94 On the Management of Multidimensional Discrete Data]. VLDB Journal 4(3)1994, Special Issue on Spatial Database Systems, pp. 401 - 444</ref><ref>Baumann, P.: [http://www.informatik.uni-trier.de/~ley/db/conf/ngits/ngits99.html#Baumann99 A Database Array Algebra for Spatio-Temporal Data and Beyond]. Proc. NGITS’99, LNCS 1649, Springer 1999, pp.76-93</ref>
Another array database language, constrained to 2-D, has been presented by Marathe and Salem.<ref>Marathe, A., Salem, K.: A language for manipulating arrays. Proc. VLDB’97, Athens, Greece, August 1997, pages 46 - 55</ref>
Seminal theoretical work has been accomplished by Libkin et al.;<ref>Libkin, L., Machlin, R., Wong, L.: A query language for multidimensional arrays: design, implementation and optimization techniques. Proc. ACM SIGMOD’96, Montreal, Canada, pp. 228 - 239</ref> in their model, called NCRA, they extend a nested relational calculus with multidimensional arrays; among the results are important contributions on array query complexity analysis.
A map algebra, suitable for 2-D and 3-D spatial raster data, has been published by Mennis et al.<ref>Mennis, J., Viger, R., Tomlin, C.D.: Cubic Map Algebra Functions for Spatio-Temporal Analysis. Cartography and Geographic Information Science 32(1)2005, pp. 17 - 32</ref>
 
In terms of Array DBMS implementations, the [[rasdaman]] system has the longest implementation track record of n-D arrays with full query support.
Line 55:
Formally, an array ''A'' is given by a (total or partial) function ''A'': ''X'' → ''V'' where ''X'', the ''___domain'' is a ''d''-dimensional integer interval for some ''d''>0 and ''V'', called ''range'', is some (non-empty) value set; in set notation, this can be rewritten as { (''p'',''v'') | ''p'' in ''X'', ''v'' in ''V'' }.
Each (''p'',''v'') in ''A'' denotes an array element or ''cell'', and following common notation we write ''A''[''p''] = ''v''.
Examples for ''X'' include {0..767} × {0..1023} (for [[Xga#Extended_graphics_arrayExtended_Graphics_Array|XGA]] sized images), examples for ''V'' include {0..255} for 8-bit greyscale images and {0..255} × {0..255} × {0..255} for standard [[RGB]] imagery.
 
Following established database practice, an array query language should be [[Declarative programming|declarative]] and safe in evaluation.
As iteration over an array is at the heart of array processing, declarativeness very much centers on this aspect. The requirement, then, is that conceptually all cells should be inspected simultaneously - in other words, the query does not enforce any explicit iteration sequence over the array cells during evaluation.
Evaluation safety is achieved when every query terminates after a finite number of (finite-time) steps; again, avoiding general loops and recursion is a way of achieving this.
Line 73:
</source>
where ''index-range-specification'' defines the result ___domain and binds an iteration variable to it, without specifying iteration sequence. The ''cell-value-expression'' is evaluated at each ___location
of the ___domain.
 
'''Example:''' “A cutout of array A given by the corner points (10,20) and (40,50).”
Line 80:
values A[p]
</source>
This special case, pure subsetting, can be abbreviated as
<source lang="sql">
A[10:20,40:50]
Line 143:
 
Array storage has to accommodate arrays of different dimensions and typically large sizes.
A core task is to maintain spatial proximity on disk so as to reduce the number of disk accesses during subsetting.
Note that an emulation of multi-dimensional arrays as nested lists (or 1-D arrays) will not per se accomplish this and, therefore, in general will not lead to scalable architectures.