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