最新公告
  • 欢迎您光临AA分享网,一个高级程序员的学习、分享的分享平台!立即加入我们
  • immudb循序渐进指南-开源不可变数据库

    immudb是用于系统和应用程序的轻量级高速不可变数据库。使用immudb,您可以跟踪事务数据库中敏感数据的更改,然后将这些更改永久记录在防篡改的immudb数据库中。这样一来,您就可以保留借记/贷记交易的不可磨灭的历史记录。传统的事务日志很难扩展,并且并非一成不变。immudb是Apachev2.0许可下的开放源代码,因此无法确定您的数据是否已泄露。

      这个怎么运作

    因此,immudb可以追溯性地提供无与伦比的洞察力,即使您的permiter受到损害,您的敏感数据也会发生什么。immudb通过内部使用Merkle树结构提供了不变性的保证。

    immudb可以像使用传统区块链一样为您提供用SHA-256编写的数据完整性的密码验证,而无需像当今的区块链那样付出成本和复杂性。

    immudb具有4个主要优点:

    ·immudb是不可变的。您只能添加记录,而不能更改或删除记录。

    ·像区块链一样,存储在immudb中的数据是加密一致且可验证的,而没有所有复杂性和高速性。

    ·任何人都可以在几分钟内开始使用immudb。可以使用node.js,Java,Python,Golang,.Net或任何其他语言。它非常易于使用,并且您可以在几分钟之内运行不可变数据库。

    ·最后,immudb是OpenSource。您可以在本地或云中运行它,它是完全免费的。immudb受Apache2.0许可的约束。

    immudb当前在Linux,FreeBSD,Windows和MacOS以及从它们派生的其他系统上运行。

    immudb高级

      组成部分

    ·immudb是服务器二进制文件,它侦听本地主机上的端口3322并提供gRPC接口

    ·immugw是连接到immudb的智能REST代理,并为应用程序提供RESTful接口。我们建议在单独的计算机上运行immudb和immugw以增强安全性

    ·immuadmin是immudb和immugw的管理CLI。您可以安装和管理两个组件的服务安装,并获取统计信息以及运行时信息。

    入门

    您可以基于GitHub存储库中最常用架构的Dockerfile构建Docker映像,也可以在Linux的Dockerhub上使用预构建的映像。

      自己建造

    dockerbuild-tmyown/immudb:latest-fDockerfile.

    dockerbuild-tmyown/immugw:latest-fDockerfile.immugw.

    dockerbuild-tmyown/immuadmin:latest-fDockerfile.immuadmin.

    immudbDockerhub

    dockerrun-it-d-p3322:3322-p9497:9497—nameimmudbcodenotary/immudb:latest

    immugwDockerhub

    dockerrun-it-d-p3323:3323–nameimmugw–envIMMUGW_IMMUDB-ADDRESS=immudbcodenotary/immugw:latest

      独立二进制

    如果要自己构建二进制文件,只需克隆此存储库并根据您的操作系统运行以下命令之一。

      #Linux

    GOOS=linuxGOARCH=amd64makeimmuadmin-staticimmudb-staticimmugw-static#macOS

    GOOS=darwinGOARCH=amd64makeimmuadmin-staticimmudb-staticimmugw-static#MicrosoftWindows

    GOOS=windowsGOARCH=amd64makeimmuadmin-staticimmudb-staticimmugw-static

    然后您可以运行immudbimmudb服务器

    #runimmudbintheforeground

    ./immudb#runimmudbinthebackground

    ./immudb-d

    将immudb安装为服务

    安装服务时,请确保构建或下载immudb和immuadmin组件,并将它们保存在同一工作目录中。

    #installimmudbservice

    ./immuadminserviceimmudbinstall#checkcurrentimmudbservicestatus

    ./immuadminserviceimmudbstatus#stopimmudbservice

    ./immuadminserviceimmudbstop#startimmudbservice

    ./immuadminserviceimmudbstart

    immudlinux服务使用以下默认值:

    ·用户:immu

    ·组:immu

    ·配置:/etc/immudb

    ·数据:/var/lib/immudb

    ·日志:/var/log/immudb

    ·服务端口:3322(immudb),3323(immugw)

    ·普罗米修斯港:9497

    您可以对immugwAPI网关执行相同的操作,出于安全原因,应将其安装在单独的系统上。

    安装该服务时,请确保构建或下载immugw和immuadmin组件,并将它们保存在同一工作目录中。

    #installimmugwservice

    ./immuadminserviceimmugwinstall#checkcurrentimmugwservicestatus

    ./immuadminserviceimmugwstatus#stopimmugwservice

    ./immuadminserviceimmugwstop#startimmugwservice

    ./immuadminserviceimmugwstart

      性能

    由于经常将immudb与AmazonQLDB进行比较,我们使用简单的演示应用程序(不使用任何不公平的优化)编写数据来进行性能基准测试。

    测试设置:

    ·4个CPU核心

    ·英特尔(R)至强(R)[email protected]

    ·64GB内存

    ·固态硬盘

    immudb统计要随时查看统计信息,请使用immuadminstats访问文本

    -t或视觉统计:

    ./immuadminstats-t

    Databasepath:db/immudb

    Uptime:1m38.64s

    Numberofentries:12

    LSMsize:701B

    VLogsize:1.1kB

    Totalsize:1.8kB

    Numberofclients:1

    Queriesperclient:

    127.0.0.1:26

    Lastquery:749.641765msago

    Avg.duration(nbcalls):µs

    ByIndex(0):0

    ByIndexSV(0):0

    ChangePassword(0):0

    Consistency(0):0

    Count(0):0

    CreateUser(0):0

    CurrentRoot(0):0

    DeleteUser(0):0

    Dump(0):0

    Get(5):20

    GetBatch(0):0

    GetBatchSV(0):0

    GetSV(0):0

    Health(16):33

    History(0):0

    HistorySV(0):0

    IScan(0):0

    IScanSV(0):0

    Inclusion(0):0

    Login(0):0

    Reference(0):0

    SafeGet(0):0

    SafeGetSV(0):0

    SafeReference(0):0

    SafeSet(0):0

    SafeSetSV(0):0

    SafeZAdd(0):0

    Scan(0):0

    ScanSV(0):0

    Set(5):76

    SetBatch(0):0

    SetBatchSV(0):0

    SetSV(0):0

    ZAdd(0):0

    ZScan(0):0

    ZScanSV(0):0

    orvisual(default)

      或视觉(默认)Prometheus和Grafana监控

    immudb具有一个内置的prometheus导出器,默认情况下会在端口9497(:9497/metrics)上发布所有度量标准。在运行Prometheus实例时,可以像以下示例一样配置目标:

    -job_name:'immudbmetrics'scrape_interval:60sstatic_configs:-targets:['my-immudb-server:9497']

      常见用例

    我们已经从用户那里了解了以下用例:

    ·使用immudb不变地将每个更新存储到现有应用程序数据库的敏感数据库字段(信用卡或银行帐户数据);

    ·将CI/CD配方存储在immudb中以保护构建和部署管道;

    ·将公共证书存储在immudb中;

    ·使用immudb作为数字对象校验和的附加哈希存储;

    ·存储日志流防篡改。

      Opvizor—适用于VMwarevSphere的不可变日志解决方案

      API文档及其使用方法

    您可以在此处找到immudb的灵活模式:

      /codenotary/immudb/blob/master/pkg/api/schema/schema.swagger.json

    如果要运行SwaggerUI,只需在克隆此仓库后运行以下docker命令:

    dockerrun-d-it-p8080:8080–nameswagger-immudb-v${PWD}/pkg/api/schema/schema.swagger.json:/openapi.json-eSWAGGER_JSON=/openapi.jsonswaggerapi/swagger-ui

    或immugw。

    一些过程,不同的模式:

    dockerrun-d-it-p8081:8080–nameswagger-immugw-v${PWD}/pkg/api/schema/gw.schema.swagger.json:/openapi.json-eSWAGGER_JSON=/openapi.jsonswaggerapi/swagger-ui

      没有程序员吗?

    实际上,如果您不是程序员,但仍想使用immudb只是为了在脚本中或脚本中玩游戏,则可以使用immuclient。

    #Linux

    GOOS=linuxGOARCH=amd64makeimmuclient-static#MicrosoftWindows

    GOOS=windowsGOARCH=amd64makeimmuclient-static

    如果您不知道如何构建它,可以使用以下Docker命令和过程:

    gitclone

    #Linux

    dockerrun-it–rm-v$(pwd):/srcgolang:1.13-stretchsh-c'cd/src&&GOOS=linuxGOARCH=amd64makeimmuclient-static'#MicrosoftWindows

    dockerrun-it–rm-v$(pwd):/srcgolang:1.13-stretchsh-c'cd/src&&GOOS=windowsGOARCH=amd64makeimmuclient-static'

    现在,您将在存储库文件夹中找到immuclient二进制文件并准备使用。

    ./immuclient–help

    详细介绍了如何使用它。

    将记录添加到immudb

    #samesystemwhereimmudbserverisrunning

    ./immuclientsafesetmykeymyvalue#immudbserverrunsonaremotesystem

    ./immuclient-asafesetmykeymyvalue

    您会收到类似于以下内容的信息:

    ./immuclientsafesetk1v1

    index:307

    key:k1

    value:v1hash:4a6a18172eba5a3ea49a3caf147ac405c874ed4c922cc7dafe0dce5ff85f35aa

    time:2020–05–1304:01:30-0400EDT

    verified:true

    从immudb获取记录

    #samesystemwhereimmudbserverisrunning

    ./immuclientsafegetmykey#getthevaluehistory

    ./immuclienthistorymykey#immudbserverrunsonaremotesystem

    ./immuclient-asafegetmykey

    safeGet和safeSet命令也对值进行一致性检查。

    现在,您可以存储任何类型的数据,例如敏感数据库字段,公共证书或什至配置文件的内容。

    让我们尝试使用本地Dockerfile并确保我们的值中没有换行或特殊字符。

    ./immuclientsafesetDockerfile1$(echo-n"$(catDockerfile)"|base64-w0)

    要取回数据,您需要确保再次进行转换。

    由于safeget的输出不仅仅包含值,如下所示:

    ./immuclientsafegetDockerfile1

    index:309

    key:Dockerfile1

    value:RlJPTSBnb2xhbmc6MS4xMy1zdHJldGNoIGFzIGJ1aWxkCldPUktESVIgL3NyYwpDT1BZIC4gLgpSVU4gR09PUz1saW51eCBHT0FSQ0g9YW1kNjQgbWFrZSBpbW11YWRtaW4tc3RhdGljCkZST00gdWJ1bnR1OjE4LjA0Ck1BSU5UQUlORVIgdkNoYWluLCBJbmMuICA8aW5mb0B2Y2hhaW4udXM+CgpDT1BZIC0tZnJvbT1idWlsZCAvc3JjL2ltbXVhZG1pbiAvdXNyL2xvY2FsL2Jpbi9pbW11YWRtaW4KCkFSRyBJTU1VX1VJRD0iMzMyMiIKQVJHIElNTVVfR0lEPSIzMzIyIgoKRU5WIElNTVVBRE1JTl9JTU1VREItQUREUkVTUz0iMTI3LjAuMC4xIiBcCiAgICBJTU1VQURNSU5fSU1NVURCLVBPUlQ9IjMzMjIiIFwKICAgIElNTVVEQl9NVExTPSJmYWxzZSIgCgpSVU4gYWRkZ3JvdXAgLS1zeXN0ZW0gLS1naWQgJElNTVVfR0lEIGltbXUgJiYgXAogICAgYWRkdXNlciAtLXN5c3RlbSAtLXVpZCAkSU1NVV9VSUQgLS1uby1jcmVhdGUtaG9tZSAtLWluZ3JvdXAgaW1tdSBpbW11ICYmIFwKICAgIGNobW9kICt4IC91c3IvbG9jYWwvYmluL2ltbXVhZG1pbgoKVVNFUiBpbW11CkVOVFJZUE9JTlQgWyIvdXNyL2xvY2FsL2Jpbi9pbW11YWRtaW4iXQ==hash:dfca217e2d87dccb8fd3fe8c1b49e620cc4ece8dc9c9fc2384cb6f6c9617eddb

    time:2020-05-1305:19:19-0400EDT

    verified:true

      命令有点复杂

    ./immuclientsafegetDockerfile1|grep"^value"|cut-d":"-f2|xargsecho-n|base64-di

    对于非开发人员,将来还会有更简单的选项,以及.net,Java,Node.js和Pythonaso的SDK驱动程序。想要了解更多关于数据库的信息,请继续关注。

    AA分享网一个高级程序员的学习、分享的IT资源分享平台
    AA分享网-企业网站源码-PHP源码-网站模板-视频教程-IT技术教程 » immudb循序渐进指南-开源不可变数据库
    • 277会员总数(位)
    • 6130资源总数(个)
    • 0本周发布(个)
    • 0 今日发布(个)
    • 787稳定运行(天)

    提供最优质的资源集合

    立即查看 了解详情