可扩展存储引擎(Extensible-Storage-Engine)

ESE 是一个基于 ISAM 的嵌入式数据库引擎,可提供基本的表格和索引访问。不过,该库还提供了许多其他强分层、可重复使用的子功能: 同步/锁定库、数据结构/类 STL 库、操作系统抽象层、缓存管理器以及完整的数据库引擎本身。「ESE is an embedded / ISAM-based database engine, that provides rudimentary table and indexed access. However the library provides many other strongly layered and and thus reusable sub-facilities as well: A Synchronization / Locking library, a Data-structures / STL-like library, an OS-abstraction layer, and a Cache Manager, as well the full blown database engine itself.」

  • 所有者: microsoft/Extensible-Storage-Engine
  • 平台: Windows
  • 许可证: MIT License
  • 分类:
  • 主题:
  • 喜欢:
    0
      比较:

Github星跟踪图

Extensible-Storage-Engine

A Non-SQL Database Engine

The Extensible Storage Engine (ESE) is one of those rare codebases having proven to have a more than 25 year serviceable lifetime. First shipping in Windows NT 3.51 and shortly thereafter in Exchange 4.0, and rewritten twice in the 90s, and heavily updated over the subsequent two decades after that, it remains a core Microsoft asset to this day.

  • It's running on 100s of thousands of machines and millions of disks for the Office 365 Mailbox Storage Backend servers
  • It's also running on large SMP systems with TB of memory for large Active Directory deployments
  • Every single Windows Client computer has several database instances running in low memory modes. In over 1 billion Windows 10 devices today, ESE has been in use in Windows client SKUs since Windows XP

ESE enables applications to store data to, and retrieve data from tables using indexed or sequential cursor navigation. It supports denormalized schemas including wide tables with numerous sparse columns, multi-valued columns, and sparse and rich indexes. ESE enables applications to enjoy a consistent data state using transacted data update and retrieval. A crash recovery mechanism is provided so that data consistency is maintained even in the event of a system crash. ESE provides ACID (Atomic Consistent Isolated Durable) transactions over data and schema by way of a write-ahead log and a snapshot isolation model.

The library provides many other strongly layered and, thus, reusable sub-facilities as well:

  • A synchronization and locking library
  • An STL-like data structures library
  • An OS abstraction layer
  • A Block / Cache Manager

All this is in addition to the full-blown database engine itself.

The version of source we post here will likely be a bit in advance of the version compiled into the latest Windows update. Therefore, the JET API documentation may be out of date with it.

Is this the JET database / engine?

No. Well ... it depends ... the question is not quite correct. Most people do not know that JET was an acronym for an API set, not a specific database format or engine. Just as there is no such thing as "the SQL engine", as there are many implementations of the protocol, there is no "JET engine" or "JET database". It is in the acronym, "Joint Engine Technology". And as such, there are two separate implementations of the JET API. This is the JET Blue engine implementation, see Notes in here. The origin of the colors have an an amusing source by the way. Most people think of the "JET engine" as JET Red, that shipped under Microsoft Access. This is not that "JET engine". We renamed to ESE to try to avoid this confusion, but it seems that the confusion continues to this day.

Future Plans

Continuous Commit Push

The code as of June 2021 is a single snapshot of the source code. We will be pushing commits from our internal repo as they are made individually, instead of as a periodic monolithic drop.

Tests

We released the unit tests, but we may in the future release more of the test code.

We will also be adding Azure pipelines to run the tests that are already present in this repo.

主要指标

概览
名称与所有者microsoft/Extensible-Storage-Engine
主编程语言C++
编程语言C++ (语言数: 9)
平台
许可证MIT License
所有者活动
创建于2021-01-21 20:34:01
推送于2025-06-12 07:42:16
最后一次提交
发布数0
用户参与
星数834
关注者数45
派生数61
提交数38
已启用问题?
问题数14
打开的问题数10
拉请求数18
打开的拉请求数1
关闭的拉请求数2
项目设置
已启用Wiki?
已存档?
是复刻?
已锁定?
是镜像?
是私有?