leveldbApache apollo 怎么实现集群部署

leveldb  时间:2021-06-22  阅读:()

怎样操作leveldb数据库,实现增删改查

展开全部 LevelDB 简介 一、LevelDB入门 LevelDB是Google开源的持久化KV单机数据库,具有 很高的随机写,顺序读/写性能,但是随机读的性能很一般,也就是说,LevelDB很适合应用在查询较少,而写很多的场景。

LevelDB应用了LSM (Log Structured Merge) 策略,lsm_tree对索引变更进行延迟及批量处理,并通过一种类似于归并排序的方式高效地将更新迁移到磁盘,降低索引插入开销,关于LSM,本文在后 面也会简单提及。

根据LevelDB官方网站的描述,LevelDB的特点和限制如下: 特点: 1、key和value都是任意长度的字节数组; 2、entry(即一条K-V记录)默认是按照key的字典顺序存储的,当然开发者也可以重载这个排序函数; 3、提供的基本操作接口:Put()、Delete()、Get()、Batch(); 4、支持批量操作以原子操作进行; 5、可以创建数据全景的snapshot(快照),并允许在快照中查找数据; 6、可以通过前向(或后向)迭代器遍历数据(迭代器会隐含的创建一个snapshot); 7、自动使用Snappy压缩数据; 8、可移植性; 限制: 1、非关系型数据模型(NoSQL),不支持sql语句,也不支持索引; 2、一次只允许一个进程访问一个特定的数据库; 3、没有内置的C/S架构,但开发者可以使用LevelDB库自己封装一个server; LevelDB本身只是一个lib库,在源码目录make编译即可,然后在我们的应用程序里面可以直接include leveldb/include/db.h头文件,该头文件有几个基本的数据库操作接口,下面是一个测试例子: #include #include #include ? ? #include "leveldb/db.h" ? ? using namespace std; int main(void) { ? ? ? ? ?leveldb::DB ? ? ?*db; ? ? ? ?leveldb::Options ?options; ? ? ? ?options.create_if_missing = true; ? ? ? ?// open ? ?leveldb::Status status = leveldb::DB::Open(options,"/tmp/testdb", &db); ? ? ? ?assert(status.ok()); ? ? ? ?string key = "name"; ? ? ? ?string value = "chenqi"; ? ? ? ?// write ? ?status = db->Put(leveldb::WriteOptions(), key, value); ? ? ? ?assert(status.ok()); ? ? ? ?// read ? ?status = db->Get(leveldb::ReadOptions(), key, &value); ? ? ? ?assert(status.ok()); ? ? ? ?cout< ? ?// delete ? ?status = db->Delete(leveldb::WriteOptions(), key); ? ? ? ?assert(status.ok()); ? ? ? ? ? ?status = db->Get(leveldb::ReadOptions(),key, &value); ? ? ? ?if(!status.ok()) { ? ? ? ?cerr< ? ?} else { ? ? ? ?cout< ? ?} ? ? ?// close ? ?delete db; ? ? ? ?return 0; ? ? } 上面的例子演示了如何插入、获取、删除一条记录,编译代码: g++ -o test test.cpp libleveldb.a -lpthread -Iinclude 执行./test后,会在/tmp下面生成一个目录testdb,里面包含若干文件: ------------------------------------------------------------ LevelDB 是google开源的一个key-value存储引擎库,类似于开源的Lucene索引库一样。

其他的软件开发者可以利用该库做二次开发,来满足定制需 求。

LevelDB采用日志式的写方式来提高写性能,但是牺牲了部分读性能。

为了弥补牺牲了的读性能,一些人提议使用SSD作为存储介质。

对于本地化的Key-value存储引擎来说,简单的使用一般都分成三个基本的步骤:(1)打开一个数据库实例;(2)对这个数据库实例进行插入,修改和查询操作;(3)最后在使用完成之后,关闭该数据库。

下面将详细讨论该三个步骤: 一、打开一个数据库实例 一个leveldb数据库有一个对应一个文件系统目录的名字。

该数据库的所有内容都存储在这个目录下。

下面的代码描述了怎样打开一个数据库或者建立一个新的数据库。

#include ? ? #include "leveldb/db.h" ? ? leveldb::DB* db; ? ? leveldb::Options options; ? ? options.create_if_missing = true; ? ? leveldb::Status status = leveldb::DB::Open(options,"/tmp/testdb", &db); ? ? assert(status.ok()); ? 如果打开已存在数据库的时候,需要抛出错误。

将以下代码插在leveldb::DB::Open方法前面: ? ? options.error_if_exists = true; 二、对数据库的简单读、写操作 LevelDB提供了Put,Delete和Get三个方法对数据库进行修改和查询。

例如,下面的代码片段描述了怎样将key1对应的value值,移到key2对应的值。

std::string value; ? ? leveldb::Status s = db->Get(leveldb::ReadOptions(), key1, &value); ? ? if(s.ok()) s = db->Put(leveldb::WriteOptions(), key2, value); ? ? if(s.ok()) s = db->Delete(leveldb::WriteOptions(), key1); 三、关闭数据库 在对数据库进行了一系列的操作之后,需要对数据库进行关闭。

该操作比较简单: ... open the db as described above... ? ? ... do something with db ... ? ? delete db; 上面对levelDB的简单使用做了基本的介绍,接下来就是如何自己写一个完成并且能运行的例子。

1、下载源码 ?git clone /p/leveldb/ 2、编译源码 ?cd leveldb && make all 3、编写test.cpp #include ? ? #include ? ? #include ? ? #include ? ? int main(){ ? ? ? ? ? ?leveldb::DB* db; ? ? ? ? ? ?leveldb::Options options; ? ? ? ? ? ?options.create_if_missing = true; ? ? ? ? ? ?leveldb::Status status = leveldb::DB::Open(options,"/tmp/testdb", &db); ? ? ? ? ? ?assert(status.ok()); ? ? ? ? ? ?//write key1,value1 ? ? ? ? ? ?std::string key="key"; ? ? ? ? ? ?std::string value = "value"; ? ? ? ? ? ?status = db->Put(leveldb::WriteOptions(), key,value); ? ? ? ? ? ?assert(status.ok()); ? ? ? ? ? ?status = db->Get(leveldb::ReadOptions(), key, &value); ? ? ? ? ? ?assert(status.ok()); ? ? ? ? ? ?std::cout< ? ? ? ?std::string key2 = "key2"; ? ? ? ? ? ?//move the value under key to key2 ? ? ? ? ? ?status = db->Put(leveldb::WriteOptions(),key2,value); ? ? ? ? ? ?assert(status.ok()); ? ? ? ? ? ?status = db->Delete(leveldb::WriteOptions(), key); ? ? ? ? ? ?assert(status.ok()); ? ? ? ? ? ?status = db->Get(leveldb::ReadOptions(),key2, &value); ? ? ? ? ? ?assert(status.ok()); ? ? ? ? ? ?std::cout< ? ? ? ?status = db->Get(leveldb::ReadOptions(),key, &value); ? ? ? ? ? ?if(!status.ok()) std::cerr< ? ? ? ?else std::cout< ? ? ? ?delete db; ? ? ? ? ? ?return 0; ? ? } 4、编译链接 g++ -o test test.cpp ../leveldb/libleveldb.a -lpthread -I../leveldb/include ? ? 注意libleveldb.a 和leveldb include的路径。

5、运行结果./test: value ? ? key2===value ? ? key ? ?NotFound:

windows下如何编译 leveldb 1.5最新版

1:Leveldb和Leveldb编译所需要的boost都是x64版本   2:Leveldb windows版本   3:打开Visual Studio,“新建”->“从现有代码创建项目”,选择leveldb-windows目录,项目名为 leveldb,选择“静态链接库(lib)项目”。

  4:打开属性管理器,选择“属性”->“C/C++”->”->“预处理器”,添加预编译宏“LEVELDB_PLATFORM_WINDOWS;OS_WIN”,这里是设置一下Windows平台的宏以便与Android等分开有选择的进行编译。

  5:根据编译错误提示,添加包含路径 $(ProjectDir);$(ProjectDir)include   6:修改 port.h 文件,加上 Windows平台的头文件 port/port_win.h   #if defined(LEVELDB_PLATFORM_POSIX)   # include "port/port_posix.h"   #elif defined(LEVELDB_PLATFORM_CHROMIUM)   # include "port/port_chromium.h"   #elif defined(LEVELDB_PLATFORM_ANDROID)   # include "port/port_android.h"   #elif defined(LEVELDB_PLATFORM_WINDOWS) //新添加的windows版本编译选项   # include "port/port_win.h" //新添加的windows版本编译选项   #endif   7:将boost所在的目录 oost_1_55_0加到工程的include目录中。

  8:boost windows x64位的lib库的编译请参见“Boost windows x64版本编译”。

将编译好的lib库添加到依赖库中。

  9:直接编译,发现某些编译不过的文件,这些是用于其他系统,而不是用于windows系统的文件,所以可以全部排除掉。

  鼠标右击 —>“从项目中排除”如下文件:   - port/port_   - port/port_   - util/env_   - util/env_   如果该文件不存在,则不用排除了。

  10:继续编译,排除一些编译出错的文件,这些文件是用来测试或者进行比较的文件,也是不需要的的,也需要排除掉,文件包括:   *_ 和 *_文件   还包括   db_bench_tree_   db_bench_      11:最后编译生成x64 的lib文件

怎么将.mat矩阵数据转换成caffe leveldb

把一个由多个矩阵构成的元胞数组转换成一个矩阵。

意即把元胞数组中的多个矩阵合并成一个矩阵。

需要注意的是并非任何情况下都能得到正确的结果。

要得到正确的结果, 一个基本要求是, 在元胞数组中,处于同行的矩阵要有相等的行数, 处于同列的矩阵要有相等的列数。

比如:myCell= {A, B; C, D}这里我们构造了一个2行2列的元胞数组, 其中A、B、C、D是四个矩阵。

如果A:一行一列 B:一行三列C:二行一列 D:二行三列那么我们可以通过调用cell2mat将A、B、C、D合并成一个矩阵。

Example: C = {[1] [2 3 4]; [5; 9] [6 7 8; 10 11 12]}; M = cell2mat(C)结果: M = 1 2 3 4 5 6 7 8 9 10 11 12

level和standard的区别是什么?

level:the height, position, standard, ect of sth 水平,层次 He used to play tennis at a high level.他以往打得一手好网球。

standard:a level of quality 水准,水平 plained about the low standard of service in the hotel.我们投诉那家旅馆服务水平低劣。

可见,level可以指任何事物的水平,水准。

而standard则仅仅指,关于质量方面的水平。

你可以说打球的水准是高的(用level)。

但如果说“打球的质量”虽然能理解,但明显不妥当。

(所以不用standard)

Apache apollo 怎么实现集群部署

Apache Apollo是一个代理服务器,主要用于消息的请求转发,下面是其常用的一些配置文件的介绍 一、users.properties: 用来配置可以使用服务器的用户以及相应的密码。

其在文件中的存储方式是:用户名=密码,如: lily=123456 表示新增一个用户,用户名是:lily,密码是:123456 二、groups.properties: 持有群体的用户映射,可以通过组而不是单个用户简化访问控制列表。

可以为一个定义的组设置多个用户,用户之间用“|”隔开,如: admins=admin|lily 表示admins组中有admin和lily两个用户 三、black-list.txt: 用来存放不允许连接服务器的IP地址,相当于黑名单类似的东西。

例如: 10.20.9.147 表示上面IP不能够连接到服务器。

四、login.config: 是一个服务器认证的配置文件,为了安全apollo1.6版本提供了认证功能,只有相应的用户名和正确的密码才能够连接 服务器。

五、服务器主配置文件apollo.xml: 该配置文件用于控制打开的端口,队列,安全,虚拟主机设置等。

1、认证:可以使用来配置是否需要连接认证,如果将其属性enable设置为false表示不用认证,任何人都可以连接服务器,默认为true 2、ess_rule:可以在broker或者virtual_host中用于定义用户对服务器资源的各种行为。

如: 表示群组users里面的用户可以对服务器资源进行的操作有:connect 、create、 destroy、 send 、receive 、consume。

详细的操作说明见: /apollo/documentation/user-manual.html 3、message stores:默认情况下apollo使用的是LevelDB store,但是推荐使用BDB store(跨平台的)只能够实用其中一种。

使用LevelDB store的配置是:默认有提供不用任何修改。

使用BDB store需要到网站下jar包支持//sleepycat/je/5.0.34/je-5.0.34.jar,将jar包放在服务器的lib目录下面,然后将配置文件改成:即可。

4、connector:用于配置服务器支持的链接协议以及相应的端口。

如: 表示支持tcp链接,使用的端口是61613,链接限制是2000,自动侦听的协议是mqtt协议。

3C云1核1G 9.9元 4核4G 16元 美国Cera 2核4G 24元

3C云互联怎么样?3C云互联专注免备案香港美国日本韩国台湾云主机vps服务器,美国高防CN2GIA,香港CN2GIA,顶级线路优化,高端品质售后无忧!致力于对互联网云计算科技深入研发与运营的极客共同搭建而成,将云计算与网络核心技术转化为最稳定,安全,高速以及极具性价比的云服务器等产品提供给用户!专注为个人开发者用户,中小型,大型企业用户提供一站式核心网络云端服务部署,促使用户云端部署化简为零,轻松...

麻花云:3折优惠,香港CN2安徽麻花云香港安徽移动BGP云服务器(大带宽)

麻花云在7月特意为主机测评用户群定制了促销活动:香港宽频CN2云服务器、安徽移动云服务器(BGP网络,非单线,效果更好)、安徽移动独立服务器、安徽电信独立服务器,全部不限制流量,自带一个IPv4,默认5Gbps的DDoS防御。活动链接:https://www.mhyun.net/act/zjcp特价云服务器不限流量,自带一个IPv4,5Gbps防御香港宽频CN2全固态Ⅲ型 4核4G【KVM】内存:...

HostMem,最新优惠促销,全场75折优惠,大硬盘VPS特价优惠,美国洛杉矶QuadraNet机房,KVM虚拟架构,KVM虚拟架构,2核2G内存240GB SSD,100Mbps带宽,27美元/年

HostMem近日发布了最新的优惠消息,全场云服务器产品一律75折优惠,美国洛杉矶QuadraNet机房,基于KVM虚拟架构,2核心2G内存240G SSD固态硬盘100Mbps带宽4TB流量,27美元/年,线路方面电信CN2 GT,联通CU移动CM,有需要美国大硬盘VPS云服务器的朋友可以关注一下。HostMem怎么样?HostMem服务器好不好?HostMem值不值得购买?HostMem是一家...

leveldb为你推荐
chartboost如何在Chartboost后台建立广告win7中文语言包win7专业版怎么安装中文语言包gps数据格式怎样把GPS测量数据DAT文件转换成EXEL文件?renderpartialrenderHtml和render有什么区别腾讯合作伙伴大会腾讯位置服务是什么?flash序列号急求flash序列号空间导航怎么把空间的导航变成只有留言板跟相册ibooks支持什么格式ibooks使用的最佳格式是什么格式?98系统windows 98系统现在还能用吗?我只是上网用!!电脑配置不高,请教一下现在还能不能用?displaysearchDisplayPort这个怎么读?我要去买线·可是不知道怎么讲!?
国际域名抢注 免费cn域名 国内永久免费云服务器 godaddy支付宝 美国php空间 免费静态空间 免费ftp空间申请 me空间社区 泉州移动 美国网站服务器 四川电信商城 lick photobucket 测试网速命令 重庆服务器 zcloud gotoassist 跟踪路由 监控主机 腾讯qq空间登录首页 更多