MongoDB is actually "cached" db, meaning that, most of its records are in memory.
I think there is also a memcached and DB hybrid which comes w/ a persistent option. i think it's called memcachedDB, which runs a in- memory db(like mongodb). this shares most of common api w/ memcached so you dont have to change code very much On Sep 21, 2:11 am, Joseph Engo <[email protected]> wrote: > Yes, MongoDB is a database. > > You mentioned blobs so I figured you were dealing with binary objects. > > The problem with your use case is objects larger then 1MB. Thats really not > what Memcached is intended to be used for. You could split the objects into > smaller chunks. But keep in mind, no object is guaranteed to be in the > cache. So if 1 chunk of your large object is missing you need to pull the > entire object back from your datastore and split it back into chunks again. > Sure, its very rare that it would happen but it does. > > What happens if you need to reboot your server for patches or you have a > crash. You will need to warm up the cache and that could take a while > depending on how you assemble the objects. > > It really sounds to be that you should do optimizations on your DB layer > first before just throwing a cache at it. :) > > On Mon, Sep 20, 2010 at 10:54 PM, MikeG. <[email protected]> wrote: > > First, thanks for taking the time. > > > Now, MongoDB is a cache engine? I think it's a DB? > > > I need a cache engine that can handle (some) objects bigger then 1MB. > > I don't have binary data. All I have is ascii elements. My final > > product is an aggregation > > of meta data of many binary code pieces. > > > Just for context - my company has many products while each may have > > several hardware > > versions. Each version has it's own binary image. > > If you have one of our products and you need to upgrade the software > > you get the binary from on > > place (I have nothing to do with it) and a build meta data from > > another place. It's a scheme to have > > only the legitimate users able to upgrade. > > > My application builds or assembles all the various products builds > > meta information and download it > > to the distribution cluster. > > > Currently my application takes forever because everything needs to be > > read from the DB. > > Caching it will do wonders. I'm sure about that. Profiling my > > application I found that the total time > > spent on DB reading is hugh. > > > Do you see any problem using memcached? > > > Thanks, > > -Michael > > > On Sep 20, 10:18 pm, Joseph Engo <[email protected]> wrote: > > > If you need larger than 1MB objects and you are only serving these > > objects > > > to 5 users at a time. It really sounds like memcache is the wrong tool > > for > > > your project. You might want to look into something like MongoDB which > > has > > > a larger object limit of 4MB. There are a number of key value stores > > that > > > can handle even larger size objects. > > > > Could you explain a little more on what type of binary data you > > > are manipulating ? > > > > On Mon, Sep 20, 2010 at 8:25 PM, MikeG. <[email protected]> wrote: > > > > Hi, > > > > > I'm starting a project in which I would like to have the entire DB in > > > > cache. > > > > The reason is that my transactions are reading large amount of data > > > > from the DB to generate > > > > a deliverable blob. > > > > > I have no concurrency issues. I will always have around 5 users max > > > > concurrently and most > > > > of the time it will be single user. SO I look at the context as > > > > virtually single user. > > > > > To avoid this massive DB reading (of large count of large chunks) I > > > > would like to have it > > > > permanently in memory. > > > > When any modification of a record happened it is not being written to > > > > the DB until the > > > > big blob final product is delivered and the local system goes idle. > > > > Only then modifications are written to the DB. Upon successful > > > > completion of DB update the local system sends a > > > > message to the recipient of the product to inform it that the DB is > > > > now in sync with the product > > > > at hand and it can be consumed. > > > > > Now, to hold 1TB in memory I need a cluster and not a small one. I > > > > have decided to use > > > > memory mapped files such that my RAM is virtual memory. Easy to get > > > > large file system of > > > > several TBs. > > > > > My question - is there any limit memcached has as far as cache size? > > > > > Also, memcached (the C implementation) has a 1MB record size limit. 1) > > > > What's the reason > > > > for that? 2) Can it be changed (with a hacked private version) 3) Does > > > > Jmemcached has the > > > > same limit? > > > > > Thanks, > > > > -Michael
