LightDB

Key-Value 数据库
授权协议 MIT
开发语言 C#
所属分类 数据库相关、 NoSQL数据库
软件类型 开源软件
地区 国产
投 递 者 温星华
操作系统 Windows
开源组织
适用人群 未知
 软件概览

LightDB 是一个 Key-Value 数据库,该项目由三个部分构成。

Lightdb.lib 对 rocksdb 做了一层封装,主要的修改是追加了保存的数据类型,和表的概念。

https://github.com/NewEconoLab/lightdb.lib

Lightdb.server 是一个远程数据库,Lightdb 的服务器版本。

https://github.com/NewEconoLab/lightdb.server

Lightdb.SDK 是方便客户端接入 LightdbServer 提供的,目前只提供了 C# 版本实现,后续还会提供 Typescript 版本实现,通讯协议比较简单,任意支持 Websocket 的方案都可以连接。

https://github.com/NewEconoLab/lightdb.sdk

项目特点

  1. 追加了数据类型和表概念

  2. 有服务器,采用 Websocket 通讯,对 JS 友好

  3. 数据的存储以 taskblock 为单位,方便数据库互相验证和同步

最重要的特点是还有一个关于读的快照 Snapshot。快照的需求来源是数据处理的事务化,或者说一批操作的原子性要求。

传统数据库一定程度支持事务化,而 Key Value 数据库这边支持事务化的程度就更差一些。

而 NEO 使用的嵌入式数据库,LevelDB 因为采用 LSM 存储方式,提供读取的 snapshot 非常容易,代价也小。

这也就造成了在 NEO 的实现中,存储部分对 Snapshot 的依赖非常强。

  • 首先先去centos官网下载x86镜像 centos官网镜像下载 虚拟机版本VMware® Workstation 16 Pro 安装过程略 注意:这里安装3个centos 也就是要搭建1cn,2dn的分布式环境 安装好之后ip分别为 cn:192.168.160.129 dn1:192.168.160.130 dn2:192.168.160.131 下载LightDB安装包 LightDB官网

  • 前言 模式是数据库领域的一个基本概念,有些数据库把用户和模式合二为一了,而LightDB有清晰的模式定义,相对更加灵活自由。用户更加方便。 那么什么是模式呢?模式是数据库中的一个概念,可以将其理解为一个命名空间或目录,不同的模式下可以有相同名称的表、函数等对象而不会产生冲突。提出模式的概念是为了便于管理,只要有权限,各个模式的对象可以互相调用。如果没有模式的概念,那么不同用户或者开发者在创建各自数

  • Lightdb no_unnest hint Lightdb 从 23.1 版本开始支持 oracle 中的unnest/no_unnest hint。 unnest:让子查询展开查询,和外部的查询进行关联、合并,从而得到执行计划 no_unnest:让子查询不展开,这时子查询作为FILTER条件来过滤外部查询 在 Lightdb 中 unnest 只支持语法 一. Lightdb 提升子链接简述

  • 集中式OR分布式 LightDB是恒生自研的分布式关系型数据库,即可支持单机版,也可使用分布式版本。正常情况下,如果数据量不是很大,在单机能够满足需求的情况下,不需要使用分布式版本。这样能降低使用以及运维等成本。但是如果数据量非常大,已经超出了单机能够承受的范围或者潜在的数据量比较大,亦或有一定的AP需求,单机版可能无法满足需求,这种情况下可以考虑部署使用分布式版本。 关于分布式版本如何部署安装,

  • 已有分布式环境 1cn,2dn cn:192.168.160.129 dn1:192.168.160.130 dn2:192.168.160.131 扩展成: 2cn,2dn cn1:192.168.160.129 cn2:192.168.160.132 dn1:192.168.160.130 dn2:192.168.160.131 先配置免密 在132上执行(lightdb用户) ssh-key

  • LightDB 22.1 新特性-新增优化器提示 LightDB 22.1 在原先基础上新增了多种优化器提示,包括use_hash_aggregation,semijoin/antijoin,swap_join_inputs。 use_hash_aggregation/no_use_hash_aggregation 使用此优化器提示可以控制group by的算法,目前group by有两种算法,一

  • 【LightDB 22.3版本新特性】Oracle分区语法兼容 1. LIST分区语法兼容 1. 创建LIST分区 Oracle语法如下: CREATE TABLE oracle_list1 ( a int, b float, c date, d timestamp, e varchar(20) ) PARTITION BY LIST(e) ( P

  • lightdb@postgres=# DECLARE lightdb@postgres$#  CURSOR c_emp IS lightdb@postgres$#  SELECT last_name,salary FROM employees_curs WHERE ROWNUM<6 ORDER BY last_name; lightdb@postgres$#  v_ename employees_

  • 概述 本篇介绍 PostgreSQL 中的数据库事务概念和 ACID 属性,演示了如何使用事务控制语句(TCL)对事务进行处理,包括BEGIN、COMMIT、ROLLBACK以及SAVEPOINT语句。 事务的特性 数据库中的事务具有原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)以及持久性(Durability),也就是 ACID 属性: 原子性 :保

  • 使用 lt_dump/lt_restore 进行导入导出 通过使用 lt_dump 和 lt_dumpall 可以进行导出,通过 -F 选项可以指定导出的格式: plain 表示导出纯文本格式的SQL脚本文件(需要使用 ltsql 进行导入); custom 表示导出自定义的归档格式(需要使用 lt_restore 进行导入); directory 表示导出目录格式(需要使用 lt_restore

  • LightDB对Oracle connect by SQL语句的转换 connect by是Oracle结构化查询中用到的,其基本语法是: select ... from tablename start by cond1 connect by cond2 --prior where cond3 简单说来是将一个树状结构存储在一张表里,比如一个表中存在两个字段(如emp表中的empno和mgr字段

  • 书接上回 这次增加的内容: (1)包 (2)打开游标的方式 (2.1)open cursorname for sql_variable; Oracle、lightdb都支持 (2.2)open cursorname for sql_variable using value. Oracle、lightdb都支持 (3)lightdb 游标操作和事务操作(commit和rollback)结合使用的情况

  • 一,oracle下的函数说明(详见链接)         a) nvl函数         b) nvl2函数         c) 隐式转换表 二,nvl/nvl2函数返回类型        通过上述官方文档,我们发现nvl/nvl2函数的返回值分别是以参数1/参数2的数据类型为参考的。当返回值能被转换成参数1/参数2所对应的数据类型时,则转换后再返回;如果无法转换,则报错。      另外一种

 相关资料
  • value绑定将ViewModel的参数绑定在form元素中,当form元素与ViewModel的属性建立关联之后,form元素的改变将会直接修改ViewModel的数据。 示例代码: //.W片段 <p>Login name: <input bind-value="userName" /></p> <p>Password: <input type="password" bind-value="

  • 数据库类型 dbm.gnu dbm.ndbm dbm.dumb 创建一个新的数据库 # dbm_new.py import dbm with dbm.open('/tmp/example.db', 'n') as db: db['key'] = 'value' db['today'] = 'Sunday' db['author'] = 'Doug' # dbm_whic

  • 问题内容: 我有两个表view_shipment_order_release和order_release_remark。当给定的order_release_gid的order_release_remark中没有记录时,则不会显示任何数据。我想在view_shipment_order_release中显示数据,即使order_release_remark中没有数据也是如此。我怎样才能做到这一点?我的

  • 这是将参数传递给方法的默认机制。 在此机制中,调用方法时,会为每个值参数创建新的存储位置。 将实际参数的值复制到它们中。 因此,对方法内部参数所做的更改对参数没有影响。 以下示例演示了该概念 - using System; namespace CalculatorApplication { class NumberManipulator { public void swap(in

  • 此绑定用于将相应DOM元素的值链接到ViewModel属性。 大多数情况下,它与input , select和textarea等元素一起使用。 这类似于文本绑定,不同之处在于,值绑定数据可以由用户更改,ViewModel将自动更新它。 Syntax value: <binding-value> Parameters HTML DOM元素的value属性设置为参数值。 较早的值将被覆盖。 如果参数

  • 问题内容: 我有一个包含域名的MySQL表: 我希望能够在此表中搜索完整的主机名(即“ www.google.com”)。如果是表格包含完整URL的相反方法,我将使用: 但是,倒数并不是那么简单。我目前的想法是搜索完整的主机名,然后逐步剥离域的每个部分,然后再次搜索。(即先搜索“ www.google.com”,然后搜索“ google.com”) 这不是特别有效或巧妙的方法,必须有更好的方法。我

  • 问题内容: 我想做一些域验证 在我的对象中,我有一个整数, 现在我的问题是我是否写 和 如果是整数,则哪一个适合域验证。 有人可以解释一下两者之间的区别吗? 谢谢。 问题答案: 和用于验证数字字段,其可以被(代表数字), ,, 等和它们各自的原始包装。 用于检查字段的长度约束。 按照文档的支持,,和而和支持原语及其包装。请参阅文档。

  • Checks if the element has a given class name in the list of class names applied to it. Parameters valuestringclass name Returns: boolean true if the element has given class