Skip to content
  • denyeart's avatar
    [FAB-1762] Refactor couchdb history db to leveldb. · 2c982629
    denyeart authored
    
    
    - Utilize leveldb for history of keys instead of couchdb
    
    - Single leveldb database serves all chains to optimize
      footprint (same structure as leveldb block index database
      and leveldb state database)
    
    - Block commit writes a history key for each key/value
      that is updated in a tran, in the form:
       ns~key~blocknum~trannum
    
    - History database is an index for history of key writes
      over time.  The key values are not included to reduce
      size of database.
    
    - GetHistoryForKey() finds all records starting with ~ns~key
      and returns the transactions that updated the key.
    
    - Subsequent changeset will lookup and return the txid
      and historic value from the block storage.  Client can
      then GetTransactionById to see the historic transactions.
    
    - Since history db size is much reduced, it is now enabled
      by default in core.yaml.
    
    - Upon crash recovery, ledger initialization will ensure
      that both state db and history db in sync with block storage
    
    Reused existing test logic, therefore the changeset
    is relatively large to ensure tests still pass.
    
    Change-Id: I79103aa39957f58d246de5b5295fb40a4b9c033b
    Signed-off-by: default avatardenyeart <enyeart@us.ibm.com>
    2c982629