当前位置: 主页 > 数据库

google 用什么数据库-google地图api数据

发布时间:2023-02-09 07:03   浏览次数:次   作者:佚名

今天想给大家分享一个谷歌开源多年,但还在苦苦挣扎,最近登上Github热榜的kv数据库——LevelDB。

google地图api数据_google 用什么数据库_google earth数据下载

Leveldb 是 Google 实现的一个非常高效的 kv 数据库。 它的创建者是著名的 Jeff Dean 和 Sanjay Ghemawat。 目前1.2版本可以支持亿级数据量。 在这个级别也有非常高的性能,主要是由于其良好的设计。

LevelDB 是一种具有非常高性能的单进程服务。 在4个Q6600的CPU机器上,每秒写数据超过40w,而随机读性能超过每秒10w。 具有以下功能特点:

levelDB 很棒,但即使是最好的工具也有其局限性,LevelDB 的局限性也很明显:

# 如何使用 LevelDB

打开数据库

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;

关闭数据库

完成数据库操作后,只需删除数据库对象即可。 例子:

... open the db as described above ...
... do something with db ...
delete db;


读和写

数据库提供Put、Delete、Get方法修改/查询数据库。 如下:

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);


并发

一个数据库一次只能由一个进程打开。 leveldb 会从操作系统获取锁google 用什么数据库,防止多个进程同时打开同一个数据库。 在单个进程中,同一个 leveldb::DB 对象可以被多个并发线程安全地使用,也就是说,不同的线程可以写入、从中获取迭代器或调用 Get(leveldb 实现确保所需的同步)。 但是其他对象,例如 Iterator 或 WriteBatch,需要外部同步保证。 如果两个线程共享这样的对象,他们需要使用自己的锁来进行互斥访问。 详见相应的头文件。

google 用什么数据库_google earth数据下载_google地图api数据

目前leveldb在Github上已star24.2Kgoogle 用什么数据库,总star数5.3K(Github地址:)