开发者

ZODB in-memory backend?

开发者 https://www.devze.com 2023-04-13 00:46 出处:网络
I\'m currently working on a fairy large project (active members is about hundreds K) and was strongly lean to Plone solutions.

I'm currently working on a fairy large project (active members is about hundreds K) and was strongly lean to Plone solutions.

I've asked some questions related to it like here and here.

Got some replies from very experienced Plonistas (and active stackoverflowers as well). I really appreciate it. People keeps saying Plone does not scale well to that large, and most of the reasons开发者_JS百科 is because of ZODB.

Then I think of an in-memory backend for ZODB. RAM is really cheap now ! you can get 128GB for just ~$3k, ten times over a normal $300 128GB SSD, and achieve ~30GBs IO bandwidth compare to that ~300MBs of the SSD.

in-memory backend + Blob for binary + 10s disk journalling for backup + all undos except last 10s would be an instance kill ! They should smoke the RDBMs and offer full ACID + Transaction + Object Mapping compare to such couch*/redis etc.

Is it technical possible ? Is there any implementation ? Does it worth implement (in your opinion) ?


There is a memcache option for RelStorage which helps when you need to use a slow database, but really you should probably just leave that sort of caching to your operating system and make sure your database server has plenty of RAM. (If your RAM is large enough then your filesystem cache should already store most of the data.)

An SSD will significantly reduce the worst case read latencies for random access to data not already in the filesystem cache. It seems silly not to use them now, especially as the Intel 330 SSD is so cheap and has a capacitor equivalent to a battery backed raid controller (making writes superfast too.)

An all in RAM solution can never be considered ACID, as it won't be Durable.

As mentioned in my comment on your other post, it is not the ZODB that is the problem here but Plone's synchronous use of a single contended portal_catalog.


Instead of keeping the entire ZODB in memory, you could mount the portal_catalog in a separate mount point and keep it in memory. I've already seen such kind of configuration and it works smoothly for about 8k users using standard hardware (2 server + 1 zeo server). It may be sufficient for your needs, maybe using more performant hw.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号