All Sitecore data is stored as a structured XML Item. The format of any given item is defined by a Template. This can be compared with relational databases, which store data in records, where the format of any given record is defined by the schema of the table that contains it. A similar comparison can be made to object oriented systems, which store data in objects defined by a given class.
When the Sitecore runtime engine generates a page for display in a web browser, it retrieves the appropriate items and translates the information held in the items into an appropriate web page. Likewise, the Sitecore Clients retrieve items and display them to the user for modification.
1.1. The Application Layer
Architecturally, the Rendering Engine, Web Controls, and Clients communicate with the Sitecore Application Layer. This layer provides easy-to-use classes, such as Database and Item, which encapsulate the data and related activities into appropriate attributes and methods. The methods in this layer respect security settings. For instance, the property Item.Children will only return the children that the current user has the right to read.
1.2. The Abstract Data Layer
The Application Layer classes interact with the Abstract Data Layer whenever they need to read, write, or manipulate data. The Abstract Data Layer provides a full API for working with data, but ignores security settings and provides a more limited API than the Application Layer. For example, when an Application Layer method requires an item’s children, it calls the Abstract Data Layer GetChildren method, which has the following signature:
public Item GetChildren(Item item);
This method returns all the children of the given item, regardless of the current user’s role and the Sitecore security settings.
The Abstract Data Layer implements caching of item data and relations. This entire layer is implemented by the DataManager class.
1.3. The Physical Layer
The Abstract Data Layer communicates with the Physical Layer when requesting items from and sending items to physical storage. Physical storage may consist of files on disk, records in an RDBMS, or integration with another product, such as Sharepoint, SAP, or Navision.
This entire layer is implemented by the base class DataProvider and specific physical storage solutions are integrated via classes which are derived from this class. For instance, Sitecore’s MS SQL Server support is implemented via the Sitecore provided SqlServerDataProvider class, which is derived from DataProvider and encapsulates all access to and from MS SQL Server.
The Physical Layer is responsible for providing the Templates which retrieved Items are based on. These Templates may be included in the main data source, as is the case for many of the standard Sitecore databases, or may be retrieved from a separate data source, such as a different database or the file system. When Templates are stored separately, Sitecore uses a feature called “chaining” of data providers. Read more about chaining in the appropriate section below.