github.com/klaytn/klaytn@v1.12.1/storage/database/doc.go (about)

     1  // Copyright 2018 The klaytn Authors
     2  // This file is part of the klaytn library.
     3  //
     4  // The klaytn library is free software: you can redistribute it and/or modify
     5  // it under the terms of the GNU Lesser General Public License as published by
     6  // the Free Software Foundation, either version 3 of the License, or
     7  // (at your option) any later version.
     8  //
     9  // The klaytn library is distributed in the hope that it will be useful,
    10  // but WITHOUT ANY WARRANTY; without even the implied warranty of
    11  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    12  // GNU Lesser General Public License for more details.
    13  //
    14  // You should have received a copy of the GNU Lesser General Public License
    15  // along with the klaytn library. If not, see <http://www.gnu.org/licenses/>.
    16  
    17  /*
    18  Package database implements various types of databases used in Klaytn.
    19  This package is used to read/write data from/to the persistent layer.
    20  
    21  Overview of database package
    22  
    23  DBManager is the interface used by the consumers of database package.
    24  databaseManager is the implementation of DBManager interface. It contains cacheManager and a list of Database interfaces.
    25  cacheManager caches data stored in the persistent layer, to decrease the direct access to the persistent layer.
    26  Database is the interface for persistent layer implementation. Currently there are 4 implementations, levelDB, memDB,
    27  badgerDB, dynamoDB and shardedDB.
    28  
    29  Source Files
    30  
    31    - badger_database.go       : implementation of badgerDB, which wraps github.com/dgraph-io/badger
    32    - cache_manager.go         : implementation of cacheManager, which manages cache layer over persistent layer
    33    - db_manager.go            : contains DBManager and databaseManager
    34    - dynamodb.go              : implementation of dynamoDB, which wraps github.com/aws/aws-sdk-go/service/dynamodb
    35    - interface.go             : interfaces used outside database package
    36    - leveldb_database.go      : implementation of levelDB, which wraps github.com/syndtr/goleveldb
    37    - memory_database.go       : implementation of MemDB, which wraps go native map structure
    38    - metrics.go               : metrics used in database package, mostly related to cacheManager
    39    - sharded_database.go      : implementation of shardedDB, which wraps a list of Database interface
    40    - schema.go                : prefixes and suffixes for database keys and database key generating functions
    41  */
    42  package database