键值数据库 IonDB

IonDB 详细介绍

IonDB 专为 Arduino 和 IoT 提供开箱即用的,基于磁盘的快速存储功能,为受限系统提供键值存储功能,速度非常快,可以充分提升 Arduino 的性能。

这个项目是英国哥伦比亚的奥肯那根大学 Ramon Lawrence 博士指导项目的一部分,由 Lawrence 博士的分布式数据实验室支持。还有另外一个类似的项目,也是专为嵌入式设备和传感器节点设计的关系型数据库 LittleD。

一般情况下,IonDB 支持:

存储一个键的任意值

重复键支持

范围和等值查询

基于硬盘的持久化数据存储

示例:

#include <SD.h>
#include "dictionary.h"
#include "slhandler.h"
void setup() {
    //Declare the dictionary and handler structs
    dictionary_handler_t    handler;
    dictionary_t            dictionary;
    //Initialize handler
    sldict_init(&handler);
    //Create dictionary: Given handler, dictionary, key type, key size, value size, dict size
    dictionary_create(&handler, &dictionary, key_type_numeric_signed, sizeof(int), 60, 10);
    ion_key_t   key = IONIZE(42);
    ion_value_t value = (ion_value_t) "Hello IonDB";
    dictionary_insert(&dictionary, key, value);
    ion_value_t returned_value = (ion_value_t) malloc(60); //from value_size
    dictionary_get(&dictionary, key, returned_value);
    printf("Returned %s\n", returned_value);
    free(returned_value);
}
void loop() {}

文章转载自 开源中国社区[https://www.oschina.net]

时间: 2024-08-26 21:08:10

键值数据库 IonDB的相关文章

LightCloud:分布式键-值数据库

Plurk.com在今年2月28日开源了LightCloud这个分布式的键-值数据库,根据 官方网站的信息,有以下特性 基于Tokyo Tyrant(这个项目貌似又是另一个名叫Tokyo Cabinet的数据库系 统的网络接口).Tokyo Tyrant是最快的键-值数据库之一,并且已经开发了好几 年并且在n个网站中被应用. 性能非常好(可以和memcached进行对比) 在很少的服务器上面可以存储百万级的数据量 简单的通过添加节点来扩展 节点可以通过master-master复制来进行备份.很

不同数据库获取新增加的主键值

获取不同数据库新增记录主键值   数据库  获取新增主键值的SQL语句 DB2 INENTIY_VAL_LOCAL() Informix SELECT dbinfo('sqlca.sqlerrd1') FROM <Table> Sybase SELECT @@IDENTITY SQL Server SELECT SCOPE_IDENTITY()或SELECT @@IDENTITY MySQL SELECT LAST_INSERT_ID() HsqlDB CALL IDENTITY() Clou

主键值数据类型-informix数据库,不小心把主键值从int8改成float类型了

问题描述 informix数据库,不小心把主键值从int8改成float类型了 informix数据库,不小心把主键值从int8改成float类型了,然后值就变了.有人能帮忙看一下可能原因是什么吗? 解决方案 补充一下,数值由824变成800,转换的是informix数据库的主键值,由int8转为float

JSP中如何取得MSSQL数据库表中自动增长的ID主键值?

JSP中如何取得MSSQL数据库表中自动增长的ID主键值? 如:建一个表student有属性列userid,username其中userid为INT类型只读自动加1的主键(也就是每插入一条记录都会自动加1),那么如何在JSP中得到当前插入行的userid值(比如:我向表里插入了三条记录,在我插入第三条记录时userid的值应为3,那么如何得到这个3)? 先创建存储过程: CREATE PROCEDURE addrec   (   @OutID int output,   @Name varcha

05_NoSQL数据库之Redis数据库:Redis的常用命令,键值相关命令和服务器相关命令

 Redis常用命令 Redis提供了丰富的命令对数据库和各种数据库类型进行操作,这些命令可以再Linux终端使用.   键值相关命令: Keys:返回满足给定pattern的所有key 用表达式*表示取出所有的key 127.0.0.1:6379> keys * 1) "age" 2) "name" 3) "age2" 127.0.0.1:6379> keys a* 1) "age" 2) "age

使用CMP Beans生成主键值

Sun Java System Application Server 支持 EJB 1.1.2.0 和 2.1 CMP beans 的自动主键生成.若 要指定自动主键生成,在 ejb-jar-xml 文件中将 prim-key-class 元素的值规定为 java.lang.Object. 具有自动生成主键的 CMP beans 可以参与与其他 CMP beans 的关系.Sun Java System Application Server 不支持数据库生成的主键值. 如果在部署期间创建数据库架

注册表常用键值意义

[HKEY_CURRENT_USERSoftwarePoliciesMicrosoftInternet ExplorerControl Panel] ;[Internet Explorer选项类] "HomePage"=dword:00000001 ;禁止更改主页设置[0=可修改] "Cache"=dword:00000001 ;禁止更改Internet临时文件设置[0=可修改] "History"=dword:00000001 ;禁止更改历史记

因为相同类型的其他实体已具有相同的主键值。在使用 &quot;Attach&quot; 方法或者将实体的状态设置为 &quot;Unchanged&quot; 或 &quot;Modified&quot; 。。。

因为相同类型的其他实体已具有相同的主键值.在使用 "Attach" 方法或者将实体的状态设置为 "Unchanged" 或 "Modified" 时如果图形中的任何实体具有冲突键值,则可能会发生上述行为.这可能是因为某些实体是新的并且尚未接收数据库生成的键值.在此情况下,使用 "Add" 方法或者 "Added" 实体状态跟踪该图形,然后将非新实体的状态相应设置为 "Unchanged"

MyBatis获取自增长主键值的两种方式及源码浅析

昨天在做项目的时候遇到了一个坑,没错,就是获取MyBatis自增长主键值的坑.因为之前一直用ibatis,所以惯性的用了ibatis的写法,结果返回的值一直是1(受影响的行数).于是去翻了翻MyBatis的源码,发现它把主键值放到了参数对象上,获取主键值需要用参数对象去get主键值.真是坑.我先把解决办法放出来,然后再接着分析MyBatis的源码是怎么做的. 环境: 数据库MySql.User表,主键设置为自增长. CREATE TABLE `user` ( `id` INT(11) NOT N