Hierarchical Data Store
SharePoint 2013 allows Hierarchical Data Storage using the SPPersistedObject class. Hierarchy means we can store key/value pairs using a parent/child hierarchy.
Hierarchical Data Store allows global storage and thus a solution spanned to multiple-sites can store common data without the need to remember the location.
![]()
Example
Step 1: Create Project
Create a Farm Solution and add a Visual Web Part into it.
![]()
Step 2: Create Class
Create a class as in the following.
- namespace HierachicalObject_WebPart  
 - {  
 -     [Guid("0A93ED9E-04DB-4754-B463-C91E542D1308")]  
 -     public class MyAppSettings : SPPersistedObject  
 -     {  
 -          public MyAppSettings()  
 -     {  
 -     }  
 -     public MyAppSettings(string name, SPPersistedObject parent)  
 -         : base(name, parent)  
 -     {  
 -     }  
 -     public MyAppSettings(string name, SPPersistedObject parent, Guid id)  
 -         : base(name, parent, id)  
 -     {  
 -     }  
 -   
 -         [Persisted]  
 -         private string _databaseName;  
 -   
 -         public string DatabaseName  
 -         {  
 -             get { return _databaseName; }  
 -             set { _databaseName = value; }  
 -         }  
 -   
 -         protected override bool HasAdditionalUpdateAccess()  
 -         {  
 -             return true;  
 -         }  
 -     }  
 -   
 - }  
 
 
The class does the following:
- Specifies 2 constructors
 - Creates 1 property
 - Marks 1 field for persistence
 - Enables override for data updates
 
Step 3: Save and Load Code
Create 2 buttons on the visual web part and add the following code in their click events.
- protected void Button1_Click(object sender, EventArgs e)  
 - {  
 -     MyAppSettings myapp = new MyAppSettings("MyAppSettings", SPFarm.Local);  
 -     myapp.DatabaseName = TextBox1.Text;  
 -     myapp.Update(true);  
 - }  
 -   
 - protected void Button2_Click(object sender, EventArgs e)  
 - {  
 -     SPSite site = SPContext.Current.Site;  
 -     MyAppSettings myapp = SPFarm.Local.GetChild<MyAppSettings>("MyAppSettings");  
 -     Label1.Text = myapp.DatabaseName;  
 -     myapp.Delete();  
 - }  
 
 
Step 4: Test the Code
You can run the solution, create a new test page and add the visual web part to it. You can see the Load and Save working if everything went well.
![]()
Advantages
To summarize the advantages of Hierarchical Data Store:
- Configuration values can be stored for global access
 - Data can be stored in a hierarchical manner
 - Custom Properties can be created
 - Data is saved in XML serialization
 - Content is persisted on backups
 
References
https://msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.sppersistedobject.aspx
Summary
This article explored Hierarchical Data Store in SharePoint 2013. You can refer to the source code attached.