Skip to content

Commit

Permalink
New webpage and docs (#366)
Browse files Browse the repository at this point in the history
* Update FASTER website and documentation
* All docs are now hosted at docs\_docs
  • Loading branch information
badrishc authored Nov 10, 2020
1 parent 4d9fcde commit 764157b
Show file tree
Hide file tree
Showing 33 changed files with 1,084 additions and 277 deletions.
74 changes: 10 additions & 64 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
<p align="center">
<image src="https://raw.githubusercontent.com/badrishc/FASTER/webpage-v2/docs/assets/images/faster-logo.png" alt="FASTER logo" width="600px">
</p>

[![NuGet](https://img.shields.io/nuget/v/Microsoft.FASTER.Core.svg)](https://www.nuget.org/packages/Microsoft.FASTER.Core/)
[![Build Status](https://dev.azure.com/ms/FASTER/_apis/build/status/Microsoft.FASTER)](https://dev.azure.com/ms/FASTER/_build/latest?definitionId=8)
[![Gitter](https://badges.gitter.im/Microsoft/FASTER.svg)](https://gitter.im/Microsoft/FASTER?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
Expand All @@ -9,76 +13,18 @@ problems in the cloud today. The FASTER project offers two artifacts to help tac

* **FASTER Log** is a high-performance concurrent persistent recoverable log, iterator, and random
reader library in C#. It supports very frequent commit operations at low latency, and can quickly saturate
disk bandwidth. It supports both sync and async interfaces, handles disk errors, and supports checksums. Learn
more about the FASTER Log in C# here: [github](docs/cs/FasterLog.md) | [web](https://microsoft.github.io/FASTER/cs/fasterlog).
disk bandwidth. It supports both sync and async interfaces, handles disk errors, and supports checksums.

* **FASTER KV** is a concurrent key-value store + cache (available in C# and C++) that is designed for point
lookups and heavy updates. FASTER supports data larger than memory, by leveraging fast external
storage (local or cloud). It also supports consistent recovery using a new checkpointing technique that lets
applications trade-off performance for commit latency. Learn
more about the FASTER KV in C# here: [github](docs/cs/FasterKV.md) | [web](https://microsoft.github.io/FASTER/cs/fasterkv).
For FASTER C++, check here: [github](docs/cc/) | [web](https://microsoft.github.io/FASTER/cc).
storage (local or cloud). It also supports consistent recovery using a fast non-blocking checkpointing technique
that lets applications trade-off performance for commit latency.

Both FASTER KV and FASTER Log offer orders-of-magnitude higher performance than comparable solutions, on standard
workloads. Start learning about FASTER, its unique capabilities, and how to get started at our official website:

Some key differentiating features of FASTER KV and FASTER Log include:
[aka.ms/FASTER](https://aka.ms/FASTER)

1. Latch-free cache-optimized index, in FASTER KV.
2. A fast persistent recoverable append-only log based on fine-grained epoch protection for concurrency,
in FASTER Log.
3. Unique “hybrid record log” design in FASTER KV, that combines the above log with in-place updates, to
shape the memory working set and retain performance.
4. Architecture as a component that can be embedded in multi-threaded cloud apps.
5. Asynchronous recovery model based on group commit (called [CPR](#Recovery-in-FASTER)).
6. A rich extensible storage device abstraction called `IDevice`, with implementations for local
storage, cloud storage, tiered storage, and sharded storage.

For standard benchmarks where the working set fits in main memory, we found FASTER KV to achieve
significantly higher throughput than current systems, and match or exceed the performance of pure
in-memory data structures while offering more functionality. See
[the SIGMOD paper](https://www.microsoft.com/en-us/research/uploads/prod/2018/03/faster-sigmod18.pdf)
for more details. We also have a detailed analysis of C# FASTER KV performance in a wiki page
[here](https://github.com/Microsoft/FASTER/wiki/Performance-of-FASTER-in-C%23). The performance of the
C# and C++ versions of FASTER are very similar. FASTER Log is also extremely fast, capable of saturating modern
NVMe SSDs using less than a core of CPU, and scaling well in a multi-threaded setting.

:new: We now support variable-length keys and values in FasterKV C# via `Memory<byte>` and more generally `Memory<T> where T : unmanaged` as key/value/input types. We also added
a new type called `SpanByte` to represent variable-length keys and values. See the sample [here](https://github.com/Microsoft/FASTER/tree/master/cs/samples/StoreVarLenTypes) for details on these capabilities. This is in addition to the existing object-log support for class types.

:new: We support C# async in FASTER KV (and FASTER Log). See the detailed guide at [this link](docs/cs/README.md) for more information. Also, check out the
samples [here](https://github.com/Microsoft/FASTER/tree/master/cs/samples).

# Getting Started

* Docs: [github](docs/) | [web](https://microsoft.github.io/FASTER)
* Research papers: [https://aka.ms/FASTER](https://aka.ms/FASTER)
* FASTER C# details: [github](docs/cs/) | [web](https://microsoft.github.io/FASTER/cs)
* FASTER C++ details: [github](docs/cc/) | [web](https://microsoft.github.io/FASTER/cc)
* Tuning FASTER: [github](docs/tuning/) | [web](https://microsoft.github.io/FASTER/tuning)
* Project roadmap: [github](docs/Roadmap.md) | [web](https://microsoft.github.io/FASTER/roadmap).
* NuGet binary feed:
* [Microsoft.FASTER.Core](https://www.nuget.org/packages/Microsoft.FASTER.Core/)
* [Microsoft.FASTER.Devices.AzureStorage](https://www.nuget.org/packages/Microsoft.FASTER.Devices.AzureStorage/)
* Samples: [github](https://github.com/Microsoft/FASTER/tree/master/cs/samples)

# Build and Test

For C#, click [here](cs/).

For C++, click [here](cc/).

# Recovery in FASTER KV

Both the C# and C++ version of FASTER KV support asynchronous checkpointing and recovery, based on a new
recovery model called Concurrent Prefix Recovery (CPR for short). You can read more about CPR in our research
paper [here](https://www.microsoft.com/en-us/research/uploads/prod/2019/01/cpr-sigmod19.pdf) (to appear in
SIGMOD 2019). Briefly, CPR is based on (periodic) group commit. However, instead of using an expensive
write-ahead log (WAL) which can kill FASTER's high performance, CPR: (1) provides a semantic description of committed
operations, of the form “all operations until offset Ti in session i”; and (2) uses asynchronous
incremental checkpointing instead of a WAL to implement group commit in a scalable bottleneck-free manner.

CPR is available in the C# and C++ versions of FASTER. More documentation on recovery in the C# version is
[here](docs/cs/FasterKV.md#checkpointing-and-recovery). For C++, we only
have examples in code right now. The sum-store, located [here](cc/playground/sum_store-dir), is a good example of checkpointing and recovery.

# Contributing

Expand Down
17 changes: 17 additions & 0 deletions docs/Gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
source "https://rubygems.org"

gem "github-pages", group: :jekyll_plugins

gem "tzinfo-data"
gem "wdm", "~> 0.1.0" if Gem.win_platform?

# If you have any plugins, put them here!
group :jekyll_plugins do
gem "jekyll-paginate"
gem "jekyll-sitemap"
gem "jekyll-gist"
gem "jekyll-feed"
gem "jemoji"
gem "jekyll-include-cache"
gem "jekyll-algolia"
end
53 changes: 4 additions & 49 deletions docs/README.md
Original file line number Diff line number Diff line change
@@ -1,52 +1,7 @@
---
layout: default
title: Overview
nav_order: 1
description: FASTER is a fast resilient key-value store and cache for larger-than-memory data
permalink: /
---

# Introduction

Managing large application state easily and with high performance is one of the hardest problems
in the cloud today. FASTER is a concurrent key-value store + cache that is designed for point
lookups and heavy updates. FASTER supports data larger than memory, by leveraging fast external
storage. It also supports consistent recovery using a new checkpointing technique that lets
applications trade-off performance for commit latency.

The following features of FASTER differentiate it from a technical perspective:
1. Latch-free cache-optimized index.
2. Unique “hybrid record log” design that combines a traditional persistent append-only log with in-place updates, to shape the memory working set and retain performance.
3. Architecture as a component that can be embedded in multi-threaded cloud apps.
4. **NEW**: Asynchronous recovery model based on group commit (called [CPR](#Recovery-in-FASTER)).

For standard benchmarks where the working set fits in main memory, we found FASTER to achieve
significantly higher throughput than current systems, and match or exceed the performance of pure
in-memory data structures while offering more functionality. See [the SIGMOD paper](https://www.microsoft.com/en-us/research/uploads/prod/2018/03/faster-sigmod18.pdf) for more details. We also have a detailed
analysis of C# FASTER performance in a wiki page
[here](https://github.com/Microsoft/FASTER/wiki/Performance-of-FASTER-in-C%23). The performance of the
C# and C++ versions of FASTER are very similar.

# Getting Started

* Visit our [research page](http://aka.ms/FASTER) for technical details and papers.
* Start reading about FASTER C# [here](cs).
* FASTER C# binaries are available via NuGet:
* [Microsoft.FASTER.Core](https://www.nuget.org/packages/Microsoft.FASTER.Core/)
* [Microsoft.FASTER.Devices.AzureStorage](https://www.nuget.org/packages/Microsoft.FASTER.Devices.AzureStorage/)
* Start reading about FASTER C++ [here](cc).


# Recovery in FASTER

Both the C# and C++ version of FASTER support asynchronous checkpointing and recovery, based on a new
recovery model called Concurrent Prefix Recovery (CPR for short). You can read more about CPR in our research
paper [here](https://www.microsoft.com/en-us/research/uploads/prod/2019/01/cpr-sigmod19.pdf) (to appear in
SIGMOD 2019). Briefly, CPR is based on (periodic) group commit. However, instead of using an expensive
write-ahead log (WAL) which can kill FASTER's high performance, CPR: (1) provides a semantic description of committed
operations, of the form “all operations until offset Ti in session i”; and (2) uses asynchronous
incremental checkpointing instead of a WAL to implement group commit in a scalable bottleneck-free manner.
Welcome to FASTER. All documentation is now accessible via the web, at [https://aka.ms/FASTER](https://aka.ms/FASTER).

CPR is available in the C# and C++ versions of FASTER. More documentation on recovery in the C# version is
[here](cs#checkpointing-and-recovery). For C++, we only
have examples in code right now. The sum-store, located [here](https://github.com/Microsoft/FASTER/tree/master/cc/playground/sum_store-dir), is a good example of checkpointing and recovery.
You can browse through the raw documentation markdown files via GitHub, if you prefer, by clicking
[here](_docs/). Contributions and improvements are always welcome. Note that you will not have the
benefit of web navigational aids here, as these are the raw documentation sources.
147 changes: 139 additions & 8 deletions docs/_config.yml
Original file line number Diff line number Diff line change
@@ -1,18 +1,149 @@
remote_theme: pmarsceill/just-the-docs
remote_theme : "mmistakes/minimal-mistakes@4.20.2"

title: FASTER
minimal_mistakes_skin : "air"

description: Fast resilient key-value store and cache for larger-than-memory data
# Site Settings
locale : "en-US"
title : "FASTER"
title_separator : "-"
subtitle : "Fast persistent recoverable log and key-value store + cache, in C# and C++"
url : https://microsoft.github.io
baseurl : "/FASTER"
repository : "microsoft/FASTER"
breadcrumbs : false
words_per_minute : 200

baseurl: "/FASTER/"
atom_feed:
path : # blank


# Site Footer
footer:
links:
- label: "GitHub"
icon: "fab fa-fw fa-github"
url: "https://github.com/microsoft/FASTER"

aux_links:

"FASTER on GitHub":
# Reading Files
include:
- .htaccess
- _pages
exclude:
- "*.sublime-project"
- "*.sublime-workspace"
- vendor
- .asset-cache
- .bundle
- .jekyll-assets-cache
- .sass-cache
- assets/js/plugins
- assets/js/_main.js
- assets/js/vendor
- Capfile
- CHANGELOG
- config
- Gemfile
- Gruntfile.js
- gulpfile.js
- LICENSE
- log
- node_modules
- package.json
- Rakefile
- README
- tmp
keep_files:
- .git
- .svn
encoding: "utf-8"
markdown_ext: "markdown,mkdown,mkdn,mkd,md"

- "//github.com/Microsoft/FASTER"

# Conversion
markdown: kramdown
highlighter: rouge
lsi: false
excerpt_separator: "\n\n"
incremental: false

search_enabled: true

# Markdown Processing
kramdown:
input: GFM
hard_wrap: false
auto_ids: true
footnote_nr: 1
entity_output: as_char
toc_levels: 1..6
smart_quotes: lsquo,rsquo,ldquo,rdquo
enable_coderay: false


# Collections
collections:
docs:
output: true
permalink: /:collection/:path/


# Defaults
defaults:
# _pages
- scope:
path: "_pages"
type: pages
values:
layout: single
author_profile: true
# _docs
- scope:
path: ""
type: docs
values:
layout: single
read_time: false
author_profile: false
share: false
comments: false
sidebar:
nav: "docs"


# Sass/SCSS
sass:
sass_dir: _sass
style: compressed # http://sass-lang.com/documentation/file.SASS_REFERENCE.html#output_style


# Outputting
permalink: /:categories/:title/
timezone: US/Pacific # https://en.wikipedia.org/wiki/List_of_tz_database_time_zones


# Plugins (previously gems:)
plugins:
- jekyll-paginate
- jekyll-sitemap
- jekyll-gist
- jekyll-feed
- jemoji
- jekyll-include-cache


# mimic GitHub Pages with --safe
whitelist:
- jekyll-paginate
- jekyll-sitemap
- jekyll-gist
- jekyll-feed
- jemoji
- jekyll-include-cache


# HTML Compression
# - http://jch.penibelst.de/
compress_html:
clippings: all
ignore:
envs: development
68 changes: 68 additions & 0 deletions docs/_data/navigation.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
# main links
main:
- title: "Quick-Start Guide"
url: /docs/quick-start-guide/
- title: "Code"
url: https://github.com/microsoft/FASTER
- title: "Releases"
url: https://github.com/microsoft/FASTER/releases

# documentation links
docs:
- title: Overview
children:
- title: "Quick-Start Guide"
url: /docs/quick-start-guide/
- title: "Release Notes"
url: https://github.com/microsoft/FASTER/releases
- title: "Frequently asked Questions"
url: /docs/faqs/

- title: FasterKV User Guide
children:
- title: "Basics"
url: /docs/fasterkv-basics/
- title: "Tuning"
url: /docs/fasterkv-tuning/
- title: "Samples"
url: /docs/fasterkv-samples/
- title: "C++ Port"
url: /docs/fasterkv-cpp/

- title: FasterLog User Guide
children:
- title: "Basics"
url: /docs/fasterlog-basics/
- title: "Tuning"
url: /docs/fasterlog-tuning/
- title: "Samples"
url: /docs/fasterlog-samples/

- title: Developer Guide
children:
- title: "Build and Test"
url: /docs/build-and-test/
- title: "Code Structure"
url: /docs/code-structure/
- title: "Roadmap"
url: /docs/roadmap/
- title: "Contributing"
url: https://github.com/microsoft/FASTER/blob/master/CONTRIBUTING.md

- title: Technical Details
children:
- title: "Introduction"
url: /docs/td-introduction/
#- title: "Design Goals"
# url: /docs/td-design-goals/
#- title: "Architecture"
# url: /docs/td-architecture/
- title: "Research Papers"
url: /docs/td-research-papers/
- title: "Slides and Videos"
url: /docs/td-slides-videos/

- title: Meta
children:
- title: "License"
url: https://github.com/microsoft/FASTER/blob/master/LICENSE
Loading

0 comments on commit 764157b

Please sign in to comment.