当前位置: 首页 > news >正文

01-第1章-概述与快速开始

第 1 章:概述与快速开始


1.1 sfsDb 简介

sfsDb 是一款专为工业物联网(IIoT)和边缘计算场景设计的纯 Go 语言嵌入式数据库。它基于 LevelDB 构建,提供了无锁事务系统、高效索引管理、时序数据处理和加密存储等功能。

核心特性

  • 纯 Go 实现:无需 CGO,跨平台编译简单
  • 创新性地将 NoSQL 的高并发写入能力与 SQL 的复杂查询能力融合在一个系统中
  • 无锁事务:基于 OCC(乐观并发控制)的高性能事务系统
  • 多种索引:支持主键、普通索引、复合索引和全文索引
  • 时序数据优化:内置时间窗口计算和数据聚合功能
  • 加密存储:支持 AES-256-GCM 加密
  • 嵌入式设计:无需独立服务器进程

1.2 环境搭建

安装 sfsDb

go get github.com/liaoran123/sfsDb

依赖要求

  • Go 1.25+
  • github.com/syndtr/goleveldb v1.0.0

1.3 完整的可运行示例

让我们通过一个完整的示例来演示 sfsDb 的基本使用:

packagemainimport("fmt""os""github.com/liaoran123/sfsDb/engine""github.com/liaoran123/sfsDb/storage")funcmain(){fmt.Println("=== sfsDb 数据库实战 - 第 1 章:Hello World 示例 ===")fmt.Println()dbPath:="./bible_examples_chapter01_db"cleanup(dbPath)fmt.Println("1. 初始化数据库")_,err:=storage.GetDBManager().OpenDB(dbPath)iferr!=nil{fmt.Printf("数据库打开失败: %v\n",err)return}deferstorage.GetDBManager().CloseDB()fmt.Println(" ✓ 数据库打开成功")fmt.Println()fmt.Println("2. 创建用户表")userTable,err:=engine.TableNew("users")iferr!=nil{fmt.Printf("创建表失败: %v\n",err)return}fmt.Println(" ✓ 表创建成功")fmt.Println()fmt.Println("3. 设置字段")userFields:=map[string]any{"id":0,// 用户ID"name":"",// 用户名"age":0,// 年龄"email":"",// 邮箱"address":"",// 地址}err=userTable.SetFields(userFields)iferr!=nil{fmt.Printf("设置字段失败: %v\n",err)return}fmt.Println(" ✓ 字段设置成功")fmt.Println()fmt.Println("4. 创建主键索引")primaryKey,err:=engine.DefaultPrimaryKeyNew("pk_id")iferr!=nil{fmt.Printf("创建主键索引失败: %v\n",err)return}primaryKey.AddFields("id")err=userTable.CreateIndex(primaryKey)iferr!=nil{fmt.Printf("创建索引失败: %v\n",err)return}fmt.Println(" ✓ 主键索引创建成功")fmt.Println()fmt.Println("5. 插入测试数据")testUser:=map[string]any{"id":1,"name":"张三","age":28,"email":"zhangsan@example.com","address":"北京市朝阳区",}_,err=userTable.Insert(&testUser)iferr!=nil{fmt.Printf("插入数据失败: %v\n",err)return}fmt.Println(" ✓ 测试数据插入成功")fmt.Println()fmt.Println("6. 查询测试数据")searchFields:=map[string]any{"id":1}dataIter,_:=userTable.Search(&searchFields)deferdataIter.Release()records:=dataIter.GetRecords(true)deferrecords.Release()iflen(records)>0{fmt.Println(" ✓ 查询成功!")fmt.Printf(" 用户信息: %+v\n",records[0])}else{fmt.Println(" ✗ 查询失败,未找到记录")}fmt.Println()fmt.Println("=== 恭喜!sfsDb 入门成功! ===")fmt.Println()fmt.Println("接下来,请继续阅读第 2 章,了解 sfsDb 的核心概念与架构。")}funccleanup(pathstring){os.RemoveAll(path)}

这段代码展示了 sfsDb 的完整使用流程:

  1. 初始化数据库:通过storage.GetDBManager().OpenDB()打开数据库
  2. 创建表:使用engine.TableNew()创建表
  3. 设置字段:通过SetFields()定义表结构
  4. 创建索引:使用CreateIndex()创建主键索引
  5. 插入数据:使用Insert()插入测试数据
  6. 查询数据:使用Search()查询并验证结果

1.4 小结

本章我们了解了 sfsDb 的基本概念和特性,并通过项目中的实际代码完成了第一个示例。在下一章中,我们将深入了解 sfsDb 的核心架构和设计思想。


本书版本:1.0.0
最后更新:2026-03-11
sfsDb- 以工业物联网边缘计算为核心场景的高性能嵌入式数据库!🚀
技术栈- Go、leveldb。纯golang实现。
项目地址:GitHub
GitCode 镜像:GitCode

http://www.jsqmd.com/news/588227/

相关文章:

  • 超表面实现光学衍射神经网络:从数字识别到Matlab与CST实践
  • 3大核心模块深度解析:如何用ComfyUI-Crystools实现AI绘画工作流的智能监控与优化
  • 2026年食品科学论文降AI工具推荐:成分分析和检测方法部分
  • 北京白发护理机构推荐?黑奥秘北京本地门店覆盖,提供便捷专业服务 - 美业信息观察
  • AI Agent框架选型:多渠道接入真的值吗?OpenClaw、LangChain、AutoGPT、CrewAI的取舍分析
  • CloudFront 跨域问题(CORS)的几种解决方式
  • AKTools实战指南:如何构建跨语言的金融数据API服务
  • 我的第一个commit
  • 学生党自动排版 AI 润色论文权威工具推荐(小白必备)
  • AIGC检测和论文查重同时超标怎么解决:两种问题的处理优先级分析
  • 在线支付系列(三):Stripe 信用卡——一件跨境商品的卡支付之旅
  • 还在为百度网盘限速而烦恼?这款开源直链解析工具让你告别蜗牛下载!
  • 微信聊天记录解密完全指南:从数据困境到自主掌控
  • 本地AI聊天、交互助手(写给小白的LLM工具选型系列:第三篇)
  • 2026年市面上水泥罐公司,砂浆罐/卧式储油罐/地埋式油罐/热油罐/不锈钢储罐/滤油罐/化工原料罐,水泥罐生产厂家有哪些 - 品牌推荐师
  • 互联网大厂Java面试实录:从Spring微服务到AI Agent全流程场景深度解析
  • 7、Ansible之Playbook高级用法
  • 2025届最火的五大AI辅助论文神器实际效果
  • 如何判断提取的RNA是否可用?
  • TEI Inference Toolkit - 工业级Embedding/NLI /Reranking服务调用最佳实践
  • 在线支付系列(一):一笔订单触发的支付之旅
  • 大模型转型指南:小白程序员轻松入门,高薪收藏必备!
  • Literal
  • 在线支付系列(四):PayPal——一位海外买家的安全支付之旅
  • 星光护航 家校同行 多方联合点亮4·2世界孤独症日公益之光
  • 通过微软账号登录Windows远程桌面
  • AD转换
  • 避免多线程冲突
  • 如何构建一个高效的知识/信息资源管理体系?启雀的功能优势介绍
  • Union