• 2012-12-28

    在PHP代码中使用LevelDB

    Views: 47456 | 3 Comments

    众所周知, LevelDB 只是一个 C/C++ 的编程语言库, 所以, PHP是无法直接使用 LevelDB 的. 如果 PHP 项目想要使用 LevelDB, 一种方法是用 C 语言开发, 把 LevelDB 封装成 PHP 的一个模块, 另一种方法是将 LevelDB 封装成一个网络服务器.

    开发 PHP 的 LevelDB 模块的方式适用性不是很高, 因为这种模式限定了必须是单机存储而且必须和 PHP 处在同一台机器. 在代码和数据分离的原则下, 将 LevelDB 封装成一个网络服务是更佳的选择.

    SSDB 就是一个 LevelDB 的服务器(LevelDB Server), 以 LevelDB 作为存储引擎, 支持 PHP/Java/Python/C/C++ 等客户端. 下面是一个 PHP 连接 SSDB, 也即 PHP 使用 LevelDB 的例子:

    <?php
    require_once('SSDB.php');
    $ssdb = new SimpleSSDB('127.0.0.1', 8888);
    $resp = $ssdb->set('key', '123');
    $resp = $ssdb->get('key');
    echo $resp; // output: 123
    

    完整 API 见 SSDB 项目 Wiki.

    SSDB 已经在 IT 牛人博客聚合网站得到应用, 非常稳定. 而且, SSDB 支持在线备份功能, 可以通过网络备份数据, 不再担心数据丢失. SSDB 还支持主从同步复制(Replication), 可用于负载均衡.

    SSDB - LevelDB Server 下载地址: https://code.google.com/p/zdb/downloads/list

    Posted by ideawu at 2012-12-28 12:00:48 Tags: ,
  • 2012-12-27

    SSDB 已经支持在线备份功能!

    Views: 37773 | 12 Comments

    SSDB 1.1.0 已经发布! 这个版本支持了在线备份功能, 可以在不停止服务的情况下备份服务器数据. 这个功能让 SSDB 更加成为一个真正生产环境的存储服务器!

    备份

    ./tools/ssdb-dump 127.0.0.1 8888 ./backup_dir
    

    这条命令从监听在 127.0.0.1:8888 的 SSDB 服务器上备份全量的数据, 保存到本地新创建的目录 backup_dir, 这个目录其实是一个 LevelDB 的数据库(db).

    恢复

    恢复方案非常简单.

    backup_dir 传输到服务器, 修改新ssdb服务器的配置文件, 将 SSDB 使用的数据库名改为 backup_dir, 然后重启 SSDB 即可.

    下一步

    SSDB 的下一个特性将是同步复制, 也即常说的"主从(Master-Slave)架构", 一旦同步复制功能加入进来, SSDB 将变得更加适合生产环境使用. 毕竟, 单份的数据总是让人不放心, 必须得复制多份保存下来才能让人安心. ssdb-dump 虽然可以达到此目的, 但还是一种被动的备份方式. 而同步复制功能将是分布式的基础. 主从架构还能用作简单的负载均衡.

    SSDB 是一个 LevelDB 服务器, 项目主页: https://code.google.com/p/zdb/

    Posted by ideawu at 2012-12-27 00:10:06 Tags: ,
  • 2012-12-19

    SSDB – 支持 zset 的 LevelDB 服务器

    Views: 36341 | No Comments

    Google 开源的 LevelDB 是一个单纯的 key-value 存储的类库, 可以理解为是一个存储引擎, 并不是常见意义的服务器. 你无法通过网络接口来使用它, 只能用 C/C++ 语言才能使用它.

    LevelDB 速度非常快, 是 Google 内部分布式存储系统 Bigtable 的存储引擎的开源版本, 作为分布式系统的一个存储节点(Tablet). LevelDB 的设计思想和 Google 内部的版本部分相同, 但肯定也被隐藏了一些接口和思想, 而这部分很可能是非常重要和关键的.

    Continue reading »

    Posted by ideawu at 2012-12-19 13:48:10 Tags: ,
  • 2012-11-09

    在 Windows(Cygwin) 环境下编译 levelDB

    Views: 33320 | No Comments

    levelDB 本身不支持 Windows 平台, 在 Cygwin 里编译的话, 也会报"Unknow platform"错误. 只需要做一下简单修改, 就能在 Windows 下编译和 levelDB. 首先, 要安装 gcc-4, 而不是 gcc-3.

    修改 build_detect_platform, 增加 CYGWIN_* 内容:

    case "$TARGET_OS" in
        CYGWIN_*)
            PLATFORM=OS_LINUX
            COMMON_FLAGS="$MEMCMP_FLAG -lpthread -DOS_LINUX -DCYGWIN"
            PLATFORM_LDFLAGS="-lpthread"
            PORT_FILE=port/port_posix.cc
            ;;
    

    Continue reading »

    Posted by ideawu at 2012-11-09 14:55:12 Tags:
|<<<456789101112>>>| 12/12 Pages, 70 Results.