• Y
    RocksDB Options file format and its serialization / deserialization. · 74b100ac
    Yueh-Hsuan Chiang 提交于
    Summary:
    This patch defines the format of RocksDB options file, which
    follows the INI file format, and implements functions for its
    serialization and deserialization.  An example RocksDB options
    file can be found in examples/rocksdb_option_file_example.ini.
    
    A typical RocksDB options file has three sections, which are
    Version, DBOptions, and more than one CFOptions.  The RocksDB
    options file in general follows the basic INI file format
    with the following extensions / modifications:
     * Escaped characters
       We escaped the following characters:
        - \n -- line feed - new line
        - \r -- carriage return
        - \\ -- backslash \
        - \: -- colon symbol :
        - \# -- hash tag #
     * Comments
       We support # style comments.  Comments can appear at the ending
       part of a line.
     * Statements
       A statement is of the form option_name = value.
       Each statement contains a '=', where extra white-spaces
       are supported. However, we don't support multi-lined statement.
       Furthermore, each line can only contain at most one statement.
     * Section
       Sections are of the form [SecitonTitle "SectionArgument"],
       where section argument is optional.
     * List
       We use colon-separated string to represent a list.
       For instance, n1:n2:n3:n4 is a list containing four values.
    
    Below is an example of a RocksDB options file:
    
    [Version]
      rocksdb_version=4.0.0
      options_file_version=1.0
    [DBOptions]
      max_open_files=12345
      max_background_flushes=301
    [CFOptions "default"]
    [CFOptions "the second column family"]
    [CFOptions "the third column family"]
    
    Test Plan: Added many tests in options_test.cc
    
    Reviewers: igor, IslamAbdelRahman, sdong, anthony
    
    Reviewed By: anthony
    
    Subscribers: maykov, dhruba, leveldb
    
    Differential Revision: https://reviews.facebook.net/D46059
    74b100ac
options_helper.h 13.6 KB