Re: Designing an application with Ceph

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 15 Aug 2013, Nulik Nol wrote:
> Thanks, id didn't know about omap, but it is a good idea. I also found
> that Eleanor Cawthon made a tree balancing project over OSDs. After
> analyzing a bit more, I found that some librados and omap functions
> aren't asynchronous. This is a considerable disadvantage when writing
> a service where you expect high load. With synchronous calls I would
> keep in  wait queue a lot of client connections So, I think the best
> solution in my case would be to write key/values in my own format over
> OSDs storing the data in chunks (ceph objects) of say 64KB , like
> 'pages' in a traditional DB engines. This way, it will be faster than
> omap implementation and it also will work with asynchronous calls.

Don't worry, everything can be done async.

Any sync call you see in librados is just a wrapper around an async call.  
There are probably gaps in the aio_*() methods because those are also just 
wrappers aio_operate(), which submits an arbitrary transaction (of 1 or 
more operations).  Look at librados.hpp for the most complete reference of 
what is supported.

sage


> 
> On Tue, Aug 13, 2013 at 6:09 PM, Samuel Just <sam.just@xxxxxxxxxxx> wrote:
> > 2 is certainly an intriguing option.  RADOS isn't really a database
> > engine (even a nosql one), but should be able to serve your needs
> > here.  Have you seen the omap api available in librados?  It allows
> > you to efficiently store key/value pairs attached to a librados object
> > (uses leveldb on the OSDs to actually handle the key/value mapping).
> >
> > One caveat is that the C api is somewhat less complete than the C++
> > api.  That would be pretty easily remedied if there were demand
> > though.
> > -Sam
> >
> > On Tue, Aug 13, 2013 at 2:01 PM, Nulik Nol <nuliknol@xxxxxxxxx> wrote:
> >> Hi,
> >> I am planning to use Ceph as a database storage for a webmail
> >> client/server application, and I am thinking to store the data as
> >> key/value pair instead of using any RDBMSs, for speed. The webmail
> >> will manage companies, and each company will have many users, users
> >> will end/receive emails and store them in their inboxes, kind of like
> >> Gmail, but per company. The server will be developed in C, client code
> >> in HTML/Javascript and binary client (standalone app) in C++
> >> So, my question is, how would you recommend me to design the backend ?
> >>
> >> I have thought of these choices:
> >>
> >> 1. Use Ceph as filesystem and BerkeleyDB as the database engine.
> >> Berekley DB uses 2 files per table, so I will have 1 directory per
> >> company and a 2 files per each table, I think there will be no more
> >> than 20 tables in my whole app. Ceph will be used here as a remote
> >> filesystem where BerkeleyDB will do all the data organization. The
> >> RADOS interface of Ceph (to store key/pair values) will be not used,
> >> since Berkeley DB will write and read to the OSDs directly and
> >> Berkeley DB is a key/value pair database. But I have never used a DB
> >> one a remote filesystem not sure if it will work well. Advantages of
> >> this architecture: quick & easy.
> >> Disadvantages: lower performance (overhead in CephFS and BerkeleyDB),
> >> also I will not be able to write plugins for RADOS in C++ to combine
> >> many data modifications in a single call to the server.
> >>
> >> 2. Use librados C api and write all the 'queries' hardcoded in C
> >> specifically for the
> >> application. Since the application is pretty standard and is not
> >> supposed to change
> >> much, I can do this. I would create a RADOS object for each
> >> application object (like for example 'user' record, 'email' record,
> >> 'chat message' record, etc...).
> >> Advantages: high performance. Disadvantages: a bit more to code ,
> >> specially the data search functions.
> >>
> >> I am interested in performance, so I am thinking to go for the option
> >> 2, what do you think? Can RADOS fully replace a database engine ? (I
> >> mean, NoSQL engine, like Berkeley for example)
> >>
> >> Will appreciate very much your comments.
> >> TIA
> >> Nulik
> >> _______________________________________________
> >> ceph-users mailing list
> >> ceph-users@xxxxxxxxxxxxxx
> >> http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com
> _______________________________________________
> ceph-users mailing list
> ceph-users@xxxxxxxxxxxxxx
> http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com
> 
> 
_______________________________________________
ceph-users mailing list
ceph-users@xxxxxxxxxxxxxx
http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com




[Index of Archives]     [Information on CEPH]     [Linux Filesystem Development]     [Ceph Development]     [Ceph Large]     [Ceph Dev]     [Linux USB Development]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [xfs]


  Powered by Linux