Xam
Encyclopedia
XAM, or the eXtensible Access Method, is a storage
standard
developed and maintained by the Storage Networking Industry Association
(SNIA). It is in the process of being ratified as an ANSI
standard. XAM is an API for fixed content aware storage devices. XAM replaces the various proprietary interfaces that have been used for this purpose in the past. Content generating applications now have a standard means of saving and finding their content across a broad array of storage devices.
XAM is similar in function to a file system API such as the POSIX
file and directory operations, in that it allows applications to store and retrieve their data. XAM stores application data in XSet objects that also contain metadata
.
The first primary object that applications deal with to store and retrieve data is called an Xset. It is the object that is the container for both the data and the associated metadata. XSet metadata goes beyond the typical system metadata, and adds fields for retention and other data management policies. Applications can also add their own user metadata as well. This is a key requirement in the fixed content storage market. Any of the metadata in the XSet can be queried for later, in order to find the XSet.
XAM also has the notion of a system that will contain the XSets. This abstracted storage system is called an XSystem. The XSystem object is also the factory for XSet objects (via create and open methods). Any given application may have access to any number of XSystem storage devices, so there is a need to create XSystem objects for each system we need to access. This is done through an object called the XAMLibrary. The XAM Library manages all the connections to the storage devices and acts as a factory for XSystem objects.
The XSystem object that is returned from the connect operation can be used to talk to the storage device. All of these objects have properties which are accessed in the same way. These properties can be of several different types and can be created at runtime. XAM provides a way to do this in a type safe manner with the XIterator (secondary) object. The XIterator can contain all properties, or just a subset (those having a name starting with a "prefix"). Finally, an XStream is a (secondary) object that can contain the actual content associated with an XSet. XStreams have operations to read and write the content using various means, both synchronously and asynchronously. The type of data an XStream holds can be any valid Mime type.
Computer storage
Computer data storage, often called storage or memory, refers to computer components and recording media that retain digital data. Data storage is one of the core functions and fundamental components of computers....
standard
Standardization
Standardization is the process of developing and implementing technical standards.The goals of standardization can be to help with independence of single suppliers , compatibility, interoperability, safety, repeatability, or quality....
developed and maintained by the Storage Networking Industry Association
Storage Networking Industry Association
An association of producers and consumers of storage networking products, whose goal is to further storage networking technology and applications.The Storage Networking Industry Association, or SNIA, was incorporated in December, 1997, and is a registered 501 non-profit trade association...
(SNIA). It is in the process of being ratified as an ANSI
Ansi
Ansi is a village in Kaarma Parish, Saare County, on the island of Saaremaa, Estonia....
standard. XAM is an API for fixed content aware storage devices. XAM replaces the various proprietary interfaces that have been used for this purpose in the past. Content generating applications now have a standard means of saving and finding their content across a broad array of storage devices.
XAM is similar in function to a file system API such as the POSIX
POSIX
POSIX , an acronym for "Portable Operating System Interface", is a family of standards specified by the IEEE for maintaining compatibility between operating systems...
file and directory operations, in that it allows applications to store and retrieve their data. XAM stores application data in XSet objects that also contain metadata
Metadata
The term metadata is an ambiguous term which is used for two fundamentally different concepts . Although the expression "data about data" is often used, it does not apply to both in the same way. Structural metadata, the design and specification of data structures, cannot be about data, because at...
.
Basic concepts
The standard XAM API consists of three primary objects and two secondary objects that an application can manipulate to store and retrieve data.The first primary object that applications deal with to store and retrieve data is called an Xset. It is the object that is the container for both the data and the associated metadata. XSet metadata goes beyond the typical system metadata, and adds fields for retention and other data management policies. Applications can also add their own user metadata as well. This is a key requirement in the fixed content storage market. Any of the metadata in the XSet can be queried for later, in order to find the XSet.
XAM also has the notion of a system that will contain the XSets. This abstracted storage system is called an XSystem. The XSystem object is also the factory for XSet objects (via create and open methods). Any given application may have access to any number of XSystem storage devices, so there is a need to create XSystem objects for each system we need to access. This is done through an object called the XAMLibrary. The XAM Library manages all the connections to the storage devices and acts as a factory for XSystem objects.
The XSystem object that is returned from the connect operation can be used to talk to the storage device. All of these objects have properties which are accessed in the same way. These properties can be of several different types and can be created at runtime. XAM provides a way to do this in a type safe manner with the XIterator (secondary) object. The XIterator can contain all properties, or just a subset (those having a name starting with a "prefix"). Finally, an XStream is a (secondary) object that can contain the actual content associated with an XSet. XStreams have operations to read and write the content using various means, both synchronously and asynchronously. The type of data an XStream holds can be any valid Mime type.
XAM Specification
The XAM standard is composed of an Architecture specification and language bindings for both the C and Java language. The latest version of the specifications can be found at the SNIA site. The standard is being updated and revised by the SNIA Fixed Content Aware Storage (FCAS) Technical Work Group (TWG), Hagen Blankenstein and Philipp Niechziol (co-chairman).XAM SDK
The SNIA has also produced open source reference implementations of C and Java XAM Libraries as well as a Vendor Interface Module (VIM) that can work on top of any file system. The SNIA Software is being updated and revised by the XAM SDK Technical Work Group (TWG),Maik Schönherr(engineer) and Torsten Heuer (co-chairman).See also
- SNIAStorage Networking Industry AssociationAn association of producers and consumers of storage networking products, whose goal is to further storage networking technology and applications.The Storage Networking Industry Association, or SNIA, was incorporated in December, 1997, and is a registered 501 non-profit trade association...
— Storage Networking Industry Association
External links
- XAM Initiative provides good material both at the overview and detail level.
- XAM SDK download is an open source reference implementation of the API.
- XAM Developers Group Provides information to assist developers working with XAM.