commit 6f14ddef96d8fc75c4898843fb60276be5b7336d Author: James Pearce Date: Tue Nov 12 10:50:46 2013 -0800 RocksDB website diff --git a/CNAME b/CNAME new file mode 100644 index 000000000..827d1c0ed --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +rocksdb.org \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 000000000..3b5b5b346 --- /dev/null +++ b/index.html @@ -0,0 +1,149 @@ + + + + + RocksDB | A persistent key-value store for fast storage environments + + + + + + + + + + +
+ +
+
+

+ A persistent key-value store for fast storage environments +

+ Get Started +
+ +
+ +
+ +
+

What is RocksDB?

+

+ RocksDB is an embeddable persistent key-value store for fast + storage. RocksDB can also be the foundation for a client-server + database but our current focus is on embedded workloads. +

+

+ RocksDB builds on LevelDB to be scalable + to run on servers with many CPU cores, to efficiently use + fast storage, to support IO-bound, in-memory and write-once + workloads, and to be flexible to allow for innovation. +

+ +

How does performance compare?

+

+ We benchmarked LevelDB and found that it was unsuitable for our + server workloads. The + benchmark results look awesome at first sight, but we quickly + realized that those results were for a database whose size was + smaller than the size of RAM on the test machine - where the entire + database could fit in the OS page cache. When we performed the same + benchmarks on a database that was at least 5 times larger than main + memory, the performance results were dismal. +

+

+ By contrast, we've published the + RocksDB benchmark results for server side workloads on Flash. We + also measured the performance of LevelDB on these server-workload + benchmarks and found that RocksDB solidly outperforms LevelDB for + these IO bound workloads. We found that LevelDB's single-threaded + compaction process was insufficient to drive server workloads. We + saw frequent write-stalls with LevelDB that caused 99-percentile + latency to be tremendously large. We found that mmap-ing a file into + the OS cache introduced performance bottlenecks for reads. We could + not make LevelDB consume all the IOs offered by the underlying Flash + storage. +

+ +

What is RocksDB suitable for?

+

+ RocksDB can be used by applications that need low latency database + accesses. A user-facing application that stores the viewing history + and state of users of a website can potentially store this content + on RocksDB. A spam detection application that needs fast access to + big data sets can use RocksDB. A graph-search query that needs to + scan a data set in realtime can use RocksDB. RocksDB can be used to + cache data from Hadoop, thereby allowing applications to query + Hadoop data in realtime. A message-queue that supports a high number + of inserts and deletes can use RocksDB. +

+ +

Why is RocksDB open source?

+

+ We are open sourcing this project on GitHub because we + think it will be useful beyond Facebook. We are hoping that software + programmers and database developers will use, enhance, and customize + RocksDB for their use-cases. We would also like to engage with the + academic community on topics related to efficiency for modern + database algorithms. +

+ +
+ + + +
+ + + +
+ + + + diff --git a/overview.html b/overview.html new file mode 100644 index 000000000..358721359 --- /dev/null +++ b/overview.html @@ -0,0 +1,72 @@ + + + + + RocksDB | A persistent key-value store for fast storage environments + + + + + + + + + + +
+ +
+
+

+ Overview +

+
+
+ +
+ +
+ +

Opening A Database

+

+ A rocksdb database has a name which corresponds to a + file system directory. All of the contents of database are stored in + this directory. The following example shows how to open a database, + creating it if necessary: +

+ +
#include <assert>
+#include "rocksdb/db.h"
+
+rocksdb::DB* db;
+rocksdb::Options options;
+options.create_if_missing = true;
+rocksdb::Status status = rocksdb::DB::Open(options, "/tmp/testdb", &db);
+assert(status.ok());
+...
+ +

+ If you want to raise an error if the database already exists, add + the following line before the rocksdb::DB::Open call: +

+ +
options.error_if_exists = true;
+ +

etc...

+
+ +
+ + + + + diff --git a/static/facebookcode.png b/static/facebookcode.png new file mode 100644 index 000000000..01944c627 Binary files /dev/null and b/static/facebookcode.png differ diff --git a/static/favicon.ico b/static/favicon.ico new file mode 100644 index 000000000..fdd809e01 Binary files /dev/null and b/static/favicon.ico differ diff --git a/static/fbos.css b/static/fbos.css new file mode 100644 index 000000000..74c6b34ac --- /dev/null +++ b/static/fbos.css @@ -0,0 +1,250 @@ +/* mobile first */ + +* { + padding: 0; + margin: 0; +} + +html { + -webkit-font-smoothing: antialiased; + background-color: #fafafa; +} + +body { + font-family: 'Helvetica Neue', Helvetica, Arial, 'lucida grande', tahoma, verdana, arial, sans-serif; + color: #222222; + margin: 0; + line-height: 1.5em; +} + +h1, h2, h3, h4 { + color: #374665; + font-weight: normal; + margin: 1.5em 0 0.5em; +} + +h1:first-child, h2:first-child, h3:first-child, h4:first-child { + margin-top: 0; +} + +h1 { + font-size: 1.5em; +} + +h2 { + font-size: 1.4em; +} + +h3 { + font-size: 1.3em; +} + +h4 { + font-size: 1.2em; +} + +p, pre, ul { + margin: 1em 0; +} + +p { + text-align: justify; +} + +pre { + border: 1px solid #ccc; + padding: 1em; + overflow-x: scroll; + background: #fff; + border-radius: 5px; +} + +ul { + list-style-position: inside; + line-height: 2em; +} + +a { + text-decoration: none; + font-weight: bold; + color: #3b5998; +} + +.width { + margin: 0 auto !important; + padding: 0 20px !important; +} + +header:after, section.content:after, footer:after { + clear: both; + content: "."; + display: block; + font-size: 0; + height: 0; + line-height: 0; + visibility: hidden; +} + +header.topbar { + background: #000; + padding: 10px 0; +} + +header.topbar h1 { + background-image: url(facebookcode.png); + background-size: 123px 16px; + background-position: 0 50%; + background-repeat: no-repeat; + float: left; + line-height: 60px; + margin: 0 10px 0 0; + overflow: hidden; + text-indent: 100%; + white-space: nowrap; + width: 240px; +} + +header.topbar nav ul { + float: right; + text-align: right; + margin: 0 0 0 10px; + padding: 0; +} + +header.topbar nav ul li { + display: inline; + text-transform: uppercase; +} + +header.topbar nav ul li a { + color: #fff; + font-size: 12px; + margin: 0 0 0 10px; + text-decoration: none; + font-weight: bold; + line-height: 60px; +} + +header.topbar nav ul li a.active { + color: #3b5998; +} + +header.hero { + background: #374665; + padding: 20px 0; +} + +header.hero hgroup h1 { + font-size: 2em; + font-weight: normal; + color: #fff; + margin: 0; + line-height: 2em; +} + +header.hero hgroup a.button { + background: #102747; + color: #fff; + font-weight: bold; + text-transform: uppercase; + padding: 10px 20px; + border-radius: 5px; + display: inline-block; + margin-top: 1em; +} + +header.hero aside { + display: none; +} + +header.hero aside * { + max-width: 100%; +} + +section.content { + padding: 30px 0; +} + +section.content article h2 { + color: #888888; + font-weight: bold; +} + +section.content article img { + display: block; + margin: 1em auto; +} + +section.content article blockquote { + padding: 0px 20px; + margin: 0 0 20px; + border-left: 5px solid #eee; +} + +section.content article blockquote p { + font-style: italic; +} + +section.content article blockquote small:before { + content: '\2014 \00A0'; +} + +section.content aside .fb-like { + top: 4px; + left: 4px; +} + +footer { + background: #000; + padding: 10px 0; + color: #fff; +} + +/* tabletish */ + +@media (min-width: 480px) { + + header.topbar nav ul li a { + font-weight: bold; + letter-spacing: 0.1em; + margin-left: 20px; + } + +} + +/* desktopish */ + +@media (min-width: 1000px) { + + header.topbar nav ul li a { + font-size: 15px; + margin-left: 30px; + } + + .width { + width: 960px; + /* make columns add to <880 for 60 gutter */ + } + + header.hero hgroup { + float: left; + width: 440px; + } + + header.hero aside { + display: block; + float: right; + width: 440px; + } + + section.content article { + float: left; + width: 660px; + } + + section.content aside { + float: right; + width: 220px; + } + +} diff --git a/static/rocksdb.css b/static/rocksdb.css new file mode 100644 index 000000000..f6fe4e300 --- /dev/null +++ b/static/rocksdb.css @@ -0,0 +1,11 @@ +@import url("fbos.css"); + +header.topbar h1 { + background-image: url(rocksdb.png); + background-size: 188px 55px; +} + +header.hero hgroup a.button { + background: #000; + color: #ffbe00; +} \ No newline at end of file diff --git a/static/rocksdb.png b/static/rocksdb.png new file mode 100644 index 000000000..4e2759e61 Binary files /dev/null and b/static/rocksdb.png differ diff --git a/static/rocksdbhero.png b/static/rocksdbhero.png new file mode 100644 index 000000000..8a8d73f7c Binary files /dev/null and b/static/rocksdbhero.png differ