-
Notifications
You must be signed in to change notification settings - Fork 11
Home
Welcome to the Nevermore wiki! This is where we keep the documentation for Nevermore.
![Nevermore logo](https://raw.githubusercontent.com/OctopusDeploy/Nevermore/7170eeeca9649b08a56a778e1211f30915bea932/assets/logo%402x.png |width=128)
Nevermore allows you to work with SQL Server as if it were a JSON document store.
Nevermore has been used in production inside of Octopus Deploy since version 3.0 (work started in 2014), when we switched from RavenDB to SQL Server. We enjoyed using RavenDB and wanted to keep many of the document concepts, but found it was easier for customers to run Octopus on top of SQL Server, so we built Nevermore and switched Octopus from RavenDB to SQL Server.
Nevermore has some simple principles:
- C# classes (Order, Customer, etc.) can be defined as documents
- Documents can have have nested properties, lists, etc. - anything that can be serialized as JSON
- Each document gets its own database table (Orders, Customers, etc.)
- The document ID is the primary key of the table. It uses Hi-Lo to generate string identifiers ("Order-123")
- Some document properties can be stored as regular columns on the table, for faster querying
- All other properties are stored in a JSON column
- If you run on SQL Server 2016 and above, you can query the JSON blob using SQL Server's JSON_VALUE functions.
👋 If you're new to Nevermore, see the quickstart.
😕 If you're wondering why we use Nevermore and not something else, see Why Nevermore?
For everything else, check the sidebar on the left.
This documentation assumes you use Nevermore 12.0 onwards. If you use older versions of Nevermore, see the migration guide.
Overview
Getting started
Extensibility
Misc