Editor's Note: This specification has already been published on dev2dev—this page represents the same specification, albeit in a slightly different, article-style format.
Service Data Objects is a technology that was originally developed as a joint collaboration between BEA and IBM and is now being developed by BEA, IBM, Oracle, SAP, Siebel, Sybase and XCalia. Service Data Objects (SDO) is designed to simplify and unify the way in which applications handle data. Using SDO, application programmers can uniformly access and manipulate data from heterogeneous data sources, including relational databases, XML data sources, Web services and enterprise information systems.
SDO is based on the concept of disconnected data graphs. Under the disconnected data graphs architecture, a client retrieves a data graph (i.e., a collection of tree-structured or graph-structured data objects) from a data source, mutates the data graph, and can then apply the data graph changes back to the data source.
The task of connecting applications to data sources is performed by data access services. Client applications can query data access services and get a data graph in response. Client applications can then send an updated data graph to a data access service to have the updates applied to the original data source. This architecture allows applications to deal principally with data graphs and data objects.
SDO enables both a static (or strongly typed) programming model and a dynamic (or loosely typed) programming model. This enables a simple programming model without sacrificing the dynamic model needed by tools and frameworks.
SDO also provides a metadata API, which allows applications, tools and frameworks to introspect the data model for a data graph. The SDO metadata API unifies data-source-specific metadata APIs to enable applications to uniformly handle data from heterogeneous data sources.