一种捕鱼的工具,在中国叫作罾
Ruby
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
bc
examples
lib
spec
.gitignore
CHANGE
MIT-LICENSE
README.md
Rakefile
TODOLIST

README.md

Zeng -- a data mapper tool for nosql database

Main features

  • Install

    sudo gem install zeng

  • Independent Object Storage

    Through backend_configure to appoint storage location

      class User
         include Zeng::Document
         backend_configure :TT,"127.0.0.1:1987"
      end
    
  • Customize define persistent properties

    You can assign persitent properties by assign method,and set default value for each property.

      class User
         include Zeng::Document
         backend_configure :TT,"127.0.0.1:1987"
         assign :name, :email, :gender=>'male', :age=>25
      end
    

Index

    class User
      include Zeng::Document
      backend_configure :TT,"127.0.0.1:1987"
      assign :name,:email, :gender=>'male', :age=>25
    end

    @jim = User.create(:name=>"jim", :email=>"jim@nonobo.com")
    @aaron = User.create(:name=>"aaron", :email=>"aaron@nonobo.com")
    @jack= User.create(:name=>"jack", :email=>"jack@nonbo.com")
    @lucy = User.create(:name=>"lucy", :email=>"lucy@nonobo.com")

Using Zeng::Indexer module, you can build index for object, just like:

    Zeng::Indexer::map(User=>[:name, :email, :age])

then,

    User.indexes << @jim
    User.indexes << @aaron
    User.indexes << @lucy
    User.find_all_by_name("jim")     #=>@jim
    User.find_all_by_age(25)         #=>@jim, @aaron, @lucy, @jack

Supoort multiple database

Zeng using adapter to connect database backend, now support TokyoCabinet/TokyoTyrant

Benchmark

You will find benchmark file in bc/book_bc.rb and bc/ac_book_bc.rb

Platform is Ubuntu10.04, ruby1.8.7, cpu:AMD Athlon(tm) Neo X2 1.6GHz memory:1.7G

activerecord mysql write 100,00,00 records 1617.170000 189.330000 1806.500000 (1970.941057)

zeng tokyocabinet write 100,00,00 records 607.300000 496.330000 1103.630000 (1907.321967)

Using in rails

in environment.rb, you will add

   require 'zeng'