This chapter focuses on the efforts to design and develop a standard pure Java API to access the metadata service of the EGEE Grid middleware, and provide at the same time a powerful object oriented framework to allow engineers and programmers to embed metadata features inside their own application, using a standard approach based on design patterns. A specific web interface is built on top of this framework that permits users and administrators to manage the metadata catalog, from any platform and everywhere, according to their own X.509-based credentials.
This work is closely linked to the metadata service of the gLite, the middleware of the EGEE Grid European project. Within the gLite architecture, the data management system (DMS) is an essential part that enables users and applications to handle data and metadata without referring to the complex details of the computing environment. DMS provides APIs and Client tools to store, locate, access, retrieve and move files dispersed on the distributed virtual File System. From the functional point of view, gLite DMS offers two fundamental macro features: file management and metadata management. The first one (performed by the file catalogue service and the storage resource manager), involves the storing abilities (save file, copy file, read file, list file), placing abilities (replica file, transfer file) and security stuff (ACL for files, users roles). The second one (implemented by the metadata catalogue), offers database schema virtualization (metadata handling, intelligent search), file cataloguing and file searching. Figure 1 shows data management system modules and their interrelations.
Key Terms in this Chapter
Framework: It is a basic conceptual structure used to solve or address complex issues. A software framework is a re-usable design for a software system (or subsystem). A software framework may include support programs, code libraries, a scripting language, or other software to help develop and glue together the different components of a software project. Various parts of the framework may be exposed through an API or be themselves API.
Provisioning: The allocation of resources to consumers on demand. A system determines specific need of the consumer and provides the resources as requested.
Middleware: A computer software that connects software components or applications. The software consists of a set of enabling services that allow multiple processes running on one or more machines to interact across a network. This technology evolved to provide for interoperability in support of the move to coherent distributed architectures, which are used most often to support and simplify complex, distributed applications. It includes web servers, application servers, and similar tools that support application development and delivery. Middleware is especially integral to modern information technology based on XML, SOAP, Web services, and service-oriented architecture.
API: An application programming interface is a set of declarations of the functions (or procedures) that an operating system, library or service provides to support requests made by computer programs. Language-dependent APIs are available only in a particular programming language. They utilize the syntax and elements of the programming language to make the API convenient to use in this particular context. Language-independent APIs are written in a way that means they can be called from several programming languages. This is a desired feature for a service-style API which is not bound to a particular process or system and is available as a remote procedure call.
Design Pattern: In software engineering, it is a general reusable solution to a commonly occurring problem in software design. A design pattern is not a finished design that can be transformed directly into code. It is a description or template for how to solve a problem that can be used in many different situations. Object-oriented design patterns typically show relationships and interactions between classes or objects, without specifying the final application classes or objects that are involved. Algorithms are not thought of as design patterns, since they solve computational problems rather than design problems. Not all software patterns are design patterns. Design patterns deal specifically with problems at the level of software design. Other kinds of patterns, such as architectural patterns, describe problems and solutions that have alternative scopes.
X.509: In cryptography, is an ITU-T standard for a public key infrastructure (PKI) and Privilege Management Infrastructure (PMI). X.509 specifies, amongst other things, standard formats for public key certificates, certificate revocation lists, attribute certificates, and a certification path validation algorithm.
Metadata: (meta data, or sometimes meta-information) is “data about data”, of any sort in any media. An item of metadata may describe an individual datum, or content item, or a collection of data including multiple content items. The word meta comes from the Greek, where it means ‘after’ or ‘beyond’. In epistemology, the word means “about (its own category)”; thus metadata is “data about the data”. Metadata is used to facilitate the understanding, characteristics, and management usage of data. The metadata required for effective data management varies with the type of data and context of use. In a library, where the data is the content of the titles stocked, metadata about a title would typically include a description of the content, the author, the publication date and the physical location.
Virtualization: A form of abstraction that provides location- and technology-transparent access of resources to the consumer. It decouples the tight connections between providers and consumers of resources, thus allowing sharing of the same resources by multiple users as needs arise.
Object Model: A collection of objects or classes through which a program can examine and manipulate some specific parts of its world. In other words, the object-oriented interface to some service or system. Such an interface is said to be the object model of the represented service or system.
Applications Grid: It shares and reuses application code but uses software technologies like service oriented architectures that facilitate sharing business logic among multiple applications.
Information Grid: This grid shares information across multiple consumers and applications. It unlocks fragmented data from proprietary applications by treating information as a resource to be shared across the grid.
Infrastructure Grid: This grid pools, shares and reuses infrastructure resources such as hardware, software, storage and networks across multiple applications.
Grid Computing: A style of computing that dynamically pools IT resources together for use based on resource need. It allows organizations to provision and scale resources as needs arise, thereby preventing the underutilization of resources (computers, networks, data archives, instruments).