What is Sterling?
Sterling is a lightweight NoSQL object-oriented database implementation for .NET, Silverlight and Windows Phone that works with your existing class structures. Sterling supports full LINQ to Object queries over keys and indexes for fast retrieval of information from large data sets.
The goal behind Sterling is to keep it:
- Non-intrusive. You shouldn't have to change your classes just to persist them.
- Lightweight. As of this writing, the DLL for Sterling is under 100 Kb. No one needs to bloat their project for something as simple as persisting data.
- Flexible. While the core is light, Sterling is designed to handle any serialization task and make it ultra-easy to query databases using LINQ-to-Objects.
- Portable. Sterling runs equally well on .NET, Silverlight, and Windows Phone.
Summary of Key Features
- Fast and compact binary serialization - benchmark it yourself to see!
- Is Dirty support
- Multiple drivers - keep the database in memory, in isolated storage or on the local file system
- Support for encryption and compression
- Backup and Restore
- Automatic cycle detection - won't crash if class A contains class B contains class A, and de-serializes these fine
- Support for IList, IDictionary, and Arrays
- Saves and restores WriteableBitmaps
- Handles interfaced and abstract properties (serializes/deserializes the concrete type)
- Support for any type key (must be serializeable) including composite keys
- Full index support including "covered" indexes
- Provides Lazy<T> and Tuple<T> implementations on Windows Phone 7
- Support for null properties and Nullable<T> or T? notation
- Automatic support for enums (converts to and from the underlying enum type)
- Out-of-the-box support for common base types like decimal, Uri, Guid, DateTime, etc.
- Handles complex object graphs - class A with class B that contains class C is handled as long as all classes have parameterless constructors
- Full trigger (before save, after save, and before delete) support