iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > GO >GoLangBoltDB数据库详解
  • 949
分享到

GoLangBoltDB数据库详解

GoBoltDBGoBoltDB数据库 2023-02-03 12:02:46 949人浏览 八月长安
摘要

说明 Bolt是一个纯粹Key/Value模型的程序。该项目的目标是为不需要完整数据库服务器(如Postgres或Mysql)的项目提供一个简单,快速,可靠的数据库。 BoltDB只

说明

Bolt是一个纯粹Key/Value模型的程序。该项目的目标是为不需要完整数据库服务器(如Postgres或Mysql)的项目提供一个简单,快速,可靠的数据库

BoltDB只需要将其链接到你的应用程序代码中即可使用BoltDB提供的api来高效的存取数据。而且BoltDB支持完全可序列化的ACID事务,让应用程序可以更简单的处理复杂操作。

BoltDB设计源于LMDB,具有以下特点:

  • 使用Go语言编写
  • 不需要服务器即可运行
  • 支持数据结构
  • 直接使用API存取数据,没有查询语句
  • 支持完全可序列化的ACID事务,这个特性比LevelDB强
  • 数据保存在内存映射的文件里。没有wal、线程压缩和垃圾回收
  • 通过COW技术,可实现无的读写并发,但是无法实现无锁的写写并发,这就注定了读性能超高,但写性能一般,适合与读多写少的场景

BoltDB是一个Key/Value(键/值)存储,这意味着没有像sql RDBMS(mysqlpostgresql等)中的表,没有行,没有列。相反,数据作为键值对存储(如在golang Maps中)。键值对存储在Buckets中,它们旨在对相似的对进行分组(这与RDBMS中的表类似)。因此,为了获得Value(值),需要知道该Value所在的桶和钥匙。

go get -u GitHub.com/boltdb/bolt

打开数据库

db, err := bolt.Open(dbfile, 0600, nil)
if err != nil {
    log.Fatal(err)
}
defer db.Close()

更新事务

err := db.Update(func(tx *bolt.Tx) error {
    ...
    return nil
})

说明:

  • 通过该接口可以实现数据更新操作该操作
  • 会被当做一个事务来处理,如果Update()内的操作返回nil,则事务会被提交,否则事务会回滚

只读操作

err := db.View(func(tx *bolt.Tx) error {
    ...
    return nil
})

说明:

通过该接口可以且只能进行数据查询操作 批量更新事务

err := db.Batch(func(tx *bolt.Tx) error {
    ...
    return nil
})

说明:

  • 通过该接口可以实现多次数据更新操作
  • 所有的更新会被当做一个事务来处理,如果Update()内的操作返回nil,则事务会被提交,否则事务会回滚

手动事务管理

// Start a writable transaction.
tx, err := db.Begin(true)
if err != nil {
    return err
}
defer tx.Rollback()
// Use the transaction...
_, err := tx.CreateBucket([]byte("MyBucket"))
if err != nil {
    return err
}
// Commit the transaction and check for error.
if err := tx.Commit(); err != nil {
    return err
}

说明:

自己创建事务,并管理事务的提交和回滚,没有利用BoltDB提供的封装式写法 示例

package main
import (
	"fmt"
	"log"

	"github.com/boltdb/bolt"
)
var dbfile = "boltdbfile.db"
var bdb *bolt.DB
var bucket = []byte("MyBuckets")
func main() {
	var err error
	bdb, err = bolt.Open(dbfile, 0600, nil)
	if err != nil {
		log.Fatal(err)
	}
	defer func() {
		_ = bdb.Close()
	}()
	CreateBuckets()
	updateData()
	selectData()
}
func CreateBuckets() error {
	return bdb.Update(func(tx *bolt.Tx) error {
		_, err := tx.CreateBucketIfNotExists(bucket)
		return err
	})
}
func updateData() error {
	return bdb.Update(func(tx *bolt.Tx) error {
		bk := tx.Bucket(bucket)
		if bk != nil {
			e1 := bk.Put([]byte("name"), []byte("rao"))
			if e1 != nil {
				return e1
			}
			e2 := bk.Put([]byte("age"), []byte("12"))
			if e2 != nil {
				return e2
			}
		}
		return nil
	})
}
func selectData() error {
	var name, age []byte
	return bdb.View(func(tx *bolt.Tx) error {
		bk := tx.Bucket(bucket)
		if bk != nil {
			name = bk.Get([]byte("name"))
			age = bk.Get([]byte("age"))
		}
		fmt.Printf("%s\n", name)
		fmt.Printf("%s\n", age)
		return nil
	})
}

到此这篇关于GoLang BoltDB数据库详解的文章就介绍到这了,更多相关Go BoltDB内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

您可能感兴趣的文档:

--结束END--

本文标题: GoLangBoltDB数据库详解

本文链接: https://www.lsjlt.com/news/194080.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • GoLangBoltDB数据库详解
    说明 Bolt是一个纯粹Key/Value模型的程序。该项目的目标是为不需要完整数据库服务器(如Postgres或MySQL)的项目提供一个简单,快速,可靠的数据库。 BoltDB只...
    99+
    2023-02-03
    Go BoltDB Go BoltDB数据库
  • postgresql数据库|数据库实操----表复制详解
    前言: 通常情况下,我们对数据库的增删改查的时候,为了确保数据的安全,需要备份表,那么,一种方法是通过pg_dump 这个工具做SQL转储操作,此方法比较复杂,麻烦,但十分的安全,可靠性也基本是百分百,但对于大表备份,十分耗时并且可能有锁表...
    99+
    2023-10-27
    数据库 postgresql mysql oracle 运维
  • ORACLE 数据库审计详解
    http://guestart.blog.51cto.com/1510660/1896340 http://www.itpub.net/thread-454252-1-1.html https:...
    99+
    2024-04-02
  • 【MySQL】MySQL information_schema 数据库详解
    MySQL information_schema 数据库详解 1. information_schema 简介2. information_schema 数据库中的表说明2.1 CHARACT...
    99+
    2023-10-23
    数据库 mysql sql
  • Oracle数据库之SQLPLUS详解
    SQL*Plus是一个强大的命令行工具,用于管理和操作Oracle数据库。它是Oracle数据库默认安装的组件之一,可以通过命令行或...
    99+
    2023-09-20
    Oracle
  • Oracle数据库实例详解
    Oracle数据库实例详解 Oracle数据库是全球著名的关系型数据库管理系统,被广泛应用于企业级应用程序的数据存储和管理。在Oracle数据库中,数据库实例是一个重要概念,它表示一个...
    99+
    2024-03-07
    数据库 oracle 实例 sql语句 并发访问
  • 数据库中间件详解
    导读:本文详细介绍了中间件,主要从数据库拆分过程及挑战、主流数据库中间件设计方案、读写分离核心要点、分库分表核心要点展开说明。  1. 数据库拆分过程及挑战 互联网当下的数据库拆分过程...
    99+
    2024-04-02
  • Redis数据库安全详解
    目录前言开放最小化很重要认证不可少防止管理员误操作也很重要担心网络被监听 开启TLS之旅吧总结前言 本篇文章基于的Redis 的环境为: redis_version:7.0.5 文档内容均为学习Redis 官方文档心得....
    99+
    2024-04-02
  • 【大数据】Neo4j 图数据库使用详解
    目录 一、图数据库介绍 1.1 什么是图数据库 1.2 为什么需要图数据库 1.3 图数据库应用领域 二、图数据库Neo4j简介 2.1 Neo4j特性 2.2 Neo4j优点 三、Neo4j数据模型 3.1 图论基础 3.2 属性图模型 ...
    99+
    2023-09-26
    neo4j 图数据库 neo4j使用 neo4j搭建 neo4j查询语法 neo4j查询数据
  • MySQL数据库的数据类型decimal详解
    在MySQL数据库中,decimal数据类型用于存储精确的小数值。它比其他浮点类型(如float和double)更适合用于存储货币金...
    99+
    2023-09-14
    MySQL
  • Android Room数据库加密详解
    本文实例为大家分享了Android Room之数据库加密的具体实现,供大家参考,具体内容如下 一、需求背景 Android平台自带的SQLite有一个致命的缺陷:不支持加密。这就导致...
    99+
    2024-04-02
  • SQLServer数据库的设计详解
    一、数据库设计的必要性 在实际的软件项目中,如果系统中需要存储的数据量比较大,需要设计的表比较多,表与表之间的关系比较复杂,那我们就需要进行规范的数据库设置。如果不经过数据库的设计,...
    99+
    2024-04-02
  • JavaSpring的数据库开发详解
    目录1.Spring JDBC1.1 Spring JdbcTemplate的解析1.2 Spring JDBC的配置2 Spring JdbcTemplate的常用方法2.1 ex...
    99+
    2023-05-17
    Java Spring数据库开发 Spring数据库
  • Mysql数据库ALTER操作详解
    目录背景:案例一:将表employees的lastName字段修改到firstName字段后面,并减少字符长度。案例二:将表employees的sex字段改名为employee_se...
    99+
    2024-04-02
  • 详解.NET数据库连接池
    目录前置知识背景1. .NET数据库连接池的背景2. .NET 数据库连接池的表现3. .NET是如何形成数据库连接池的?4. 连接池中的连接什么时候被移除?.NET 如何清...
    99+
    2024-04-02
  • 阿里云数据库IP详解
    阿里云数据库是一款提供高效、安全、稳定的数据存储服务的产品。本文将详细介绍阿里云数据库的IP地址。 一、阿里云数据库的简介阿里云数据库是一款提供高效、安全、稳定的数据存储服务的产品。它提供了多种数据库服务,包括关系型数据库、NoSQL数据库...
    99+
    2023-11-05
    阿里 详解 数据库
  • MySQL数据库之索引详解
    目录一、MySQL索引简介二、MySQL五种类型索引详解(一)普通索引(二)唯一性索引(三)主键索引(四)复合索引(五)全文索引三、MySQL索引使用原则总结今天继续给大家介绍MyS...
    99+
    2024-04-02
  • 详解Java数据库连接池
    目录一、什么是数据库连接池二、为什么需要连接池,好处是什么?三、都有哪些连接池方案四、连接池需要关注的参数五、怎么创建连接池,show me the code5.1 pom.xml ...
    99+
    2024-04-02
  • Android room数据库使用详解
    1、引入库 def room_version = "2.3.0" implementation "androidx.room:room-runtime:$room_ve...
    99+
    2024-04-02
  • MySQL数据库 | SQL语句详解
    MySQL数据库基本操作——DDL DDL解释: 数据库的常用操作 表结构的常用操作 修改表结构 数据库的常用操作 查看所有的数据库show databases;创建数据库create database if not exists 表名;切...
    99+
    2023-08-23
    数据库 sql mysql
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作