由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - objects status snapshot怎么做
相关主题
FMP 一个完整可运行的范例程序python一问
请教个JAVA的小问题C, C++, Java, C#, Objective-C,
[合集] C++ question -- how to save objectsYou Don’t Know JS: this & Object Prototypes
弱问一下array如何get set?
return value of a python function...关于effective c++的几个问题
问问开发ios的,有用C++来组织代码的么?面题:copy directed graph
FMP 3.0 Mitbbs 首发 — 求建议求反馈一个有向图问题
怎么检测c++ smart pointer的循环引用?Restaurant Reservation System...
相关话题的讨论汇总
话题: objects话题: snapshot话题: 操作话题: status话题: object
进入Programming版参与讨论
1 (共1页)
f****4
发帖数: 1359
1
问题描述:
一个容器,大概有40万+的objects,对object有get/set/delete/add操作;这些操作要
求尽快完成。还有几个操作(long run tasks),要求对整个容器所有objects做遍历
,遍历过程会很长(有些费时间的业务处理),这几个操作的要求就是只对snapshot做
。就是说一旦开始遍历,后面来的set/delete/add操作完全不关心,等到这次操作结束
下次再处理。
这些long run tasks会增加。支持多线程。每个object的get/set操作很频繁。
我能想到的就是一旦long run task开始跑了,到它完成前对所有发生的object操作全
部更新在临时对象上。等task结束了,和容器里的对象同步。好处是实现方便,坏处是
内存太浪费了,同步浪费时间。没讲清楚:因为task太耗时间,直接对每个object拷贝
一份更快,但内存就费得更多了。。。
有啥好的点子?
w***g
发帖数: 5958
2
做snapshot最牛的思路莫过于基于日志的数据结构。你可以参考一下Log-Structured
File System,或许会有启发。

【在 f****4 的大作中提到】
: 问题描述:
: 一个容器,大概有40万+的objects,对object有get/set/delete/add操作;这些操作要
: 求尽快完成。还有几个操作(long run tasks),要求对整个容器所有objects做遍历
: ,遍历过程会很长(有些费时间的业务处理),这几个操作的要求就是只对snapshot做
: 。就是说一旦开始遍历,后面来的set/delete/add操作完全不关心,等到这次操作结束
: 下次再处理。
: 这些long run tasks会增加。支持多线程。每个object的get/set操作很频繁。
: 我能想到的就是一旦long run task开始跑了,到它完成前对所有发生的object操作全
: 部更新在临时对象上。等task结束了,和容器里的对象同步。好处是实现方便,坏处是
: 内存太浪费了,同步浪费时间。没讲清楚:因为task太耗时间,直接对每个object拷贝

f****4
发帖数: 1359
3
谢谢,我去看看。
log的话估计悬,主要get可能会受影响。得试试看。
在优化老模块,条条框框太多了 -_-

【在 w***g 的大作中提到】
: 做snapshot最牛的思路莫过于基于日志的数据结构。你可以参考一下Log-Structured
: File System,或许会有启发。

g*****g
发帖数: 34805
4
Take a page from DB cluster design. You use a replica for long running job.
Updates are logged, batched and asynchronous.
If your objects are in memory, logging does you no good, but you can still
batch and update async. And if memory is a concern, who says replica can't
be in a different machine.

【在 f****4 的大作中提到】
: 问题描述:
: 一个容器,大概有40万+的objects,对object有get/set/delete/add操作;这些操作要
: 求尽快完成。还有几个操作(long run tasks),要求对整个容器所有objects做遍历
: ,遍历过程会很长(有些费时间的业务处理),这几个操作的要求就是只对snapshot做
: 。就是说一旦开始遍历,后面来的set/delete/add操作完全不关心,等到这次操作结束
: 下次再处理。
: 这些long run tasks会增加。支持多线程。每个object的get/set操作很频繁。
: 我能想到的就是一旦long run task开始跑了,到它完成前对所有发生的object操作全
: 部更新在临时对象上。等task结束了,和容器里的对象同步。好处是实现方便,坏处是
: 内存太浪费了,同步浪费时间。没讲清楚:因为task太耗时间,直接对每个object拷贝

w***g
发帖数: 5958
5
人可能受不了eventual consistancy.

.

【在 g*****g 的大作中提到】
: Take a page from DB cluster design. You use a replica for long running job.
: Updates are logged, batched and asynchronous.
: If your objects are in memory, logging does you no good, but you can still
: batch and update async. And if memory is a concern, who says replica can't
: be in a different machine.

g*****g
发帖数: 34805
6
受不了就不会谈 snapshot了。

【在 w***g 的大作中提到】
: 人可能受不了eventual consistancy.
:
: .

f****4
发帖数: 1359
7
不是所有地方都能想加机器就加机器的。这点传统IT不如你们做服务的爽。。。
优化了点别细节,提高了点速度。这块留着下回再说吧。

.

【在 g*****g 的大作中提到】
: Take a page from DB cluster design. You use a replica for long running job.
: Updates are logged, batched and asynchronous.
: If your objects are in memory, logging does you no good, but you can still
: batch and update async. And if memory is a concern, who says replica can't
: be in a different machine.

n****1
发帖数: 1136
8
这种需求在fp中非常常见,因为data structure都是immutable, 所以每个add/delete
都会生成new copy, 但完全在内存层复制性能消耗太大,所以就做copy on write, 专
业点叫persistent data structure
你可以看看boost里面的Boost.Flyweight, java里面也应该有类似的data structure.

【在 f****4 的大作中提到】
: 问题描述:
: 一个容器,大概有40万+的objects,对object有get/set/delete/add操作;这些操作要
: 求尽快完成。还有几个操作(long run tasks),要求对整个容器所有objects做遍历
: ,遍历过程会很长(有些费时间的业务处理),这几个操作的要求就是只对snapshot做
: 。就是说一旦开始遍历,后面来的set/delete/add操作完全不关心,等到这次操作结束
: 下次再处理。
: 这些long run tasks会增加。支持多线程。每个object的get/set操作很频繁。
: 我能想到的就是一旦long run task开始跑了,到它完成前对所有发生的object操作全
: 部更新在临时对象上。等task结束了,和容器里的对象同步。好处是实现方便,坏处是
: 内存太浪费了,同步浪费时间。没讲清楚:因为task太耗时间,直接对每个object拷贝

1 (共1页)
进入Programming版参与讨论
相关主题
Restaurant Reservation System...return value of a python function...
Why it raised a TypeError ? (python)问问开发ios的,有用C++来组织代码的么?
[合集] Solve this task using recursion. how to ?FMP 3.0 Mitbbs 首发 — 求建议求反馈
使用CPython要避免多线程?怎么检测c++ smart pointer的循环引用?
FMP 一个完整可运行的范例程序python一问
请教个JAVA的小问题C, C++, Java, C#, Objective-C,
[合集] C++ question -- how to save objectsYou Don’t Know JS: this & Object Prototypes
弱问一下array如何get set?
相关话题的讨论汇总
话题: objects话题: snapshot话题: 操作话题: status话题: object