怎么把业务数据与历史数据分开,但历史数据可实时查询?

dkwu 2002-02-05 01:42:21
怎么把业务数据与历史数据分开,但历史数据可实时查询?
例如:酒店管理软件,既要把住客的历史入住资料保存,作为报表的数据来源,同时又可
操作数据。如:添加、删除等。因为历史数据太多,在前台一次性打开,无论是查询还是数据操作都很慢。有什么两两全其美的办法?我数据库是MS SQL SERVER 前台是DELPHI。
我想了一些办法,不知道行不行的通?请高手帮忙,多提宝贵建议。
1.在数据库表设计时把业务数据表与历史数据表分开,历史数据由业务数据触发。但存在问题是:运行表的数据截除,有时历史与运行数据没有明确的界限。前台的查询也要在两个表之间转来转去,不好处理。
2.在数据表中加“结转”标志,前台打开时只打开业务数据,查询时才把历史数据打开,其实是改变查询条件,但如果先查历史数据再操作数据,则又回到了前面说的情况。
2.在MS SQL SERVER 中的备份能否解决该问题?
3.利用数据仓库能否很好解决该问题?
4.有没有其他的解决办法?
请高手帮忙!
...全文
481 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
jinnee 2002-04-08
  • 打赏
  • 举报
回复
只要增加硬件投入就行了,比如把服务器换成 4 cpu 至强蕊片,4G内存,再加上 ssa 硬盘陈列,性能绝对不是问题。
scy_cd 2002-04-07
  • 打赏
  • 举报
回复
抛砖引玉:
要看看你所需要的软件是 事务处理类型还是决策支持类型;
1/事务处理:将当前数据与历史数据分开,定义两个结构完全相同的表,一个为当前表,一个为历史表,当前表为了插入删除方便,历史表为了查询方便,因此两个表索引不同。另外,自己拟定一个导数据的周期,每隔一段时间进行数据初始化,将当前表中的数据导入历史表中,如:当前表中总是保持存有最近2个月数据,每个月更新一次,将上一个月的数据导入历史表中,为防止万一,历史表也可以更新,增加一个是否结账的标志即可。这样,既方便查询又方便操作。
2/决策支持:应该和事务处理的数据库结构完全不同。
eiffeltower 2002-03-31
  • 打赏
  • 举报
回复
listen
spell 2002-03-30
  • 打赏
  • 举报
回复
关注
zcflion 2002-03-22
  • 打赏
  • 举报
回复
楼上的够绝!
wooe 2002-03-19
  • 打赏
  • 举报
回复
歷史的概念怎麽定義?
當前數據怎樣向歷史數據轉化?
signorino_3 2002-03-19
  • 打赏
  • 举报
回复
第一 当前业务数据使用酒店的业务管理软件查询管理(这个肯定有),如果你自己开发的酒店管理软件,你可以在软件里调用数据仓库的前端查询工具,如果是买的软件,只好另外建设一套数据仓库查询分析系统。
建设数据仓库,如果你有钱,20万以上(15万也不是不可以商量),使用MS SQL2000带的OLAP SERVER (包括建模工具,管理工具),再用TDS (微软)把数据从业务系统到过去(可以定制时间触发),最后购买一个第三方的前端数据展示工具,就算完了,你所有的欲望都将得到满足,真爽。如果没钱,微软的全面盗版,前端有能力就开发,没能力就用微软自带的,或者用微软的桌面软件(只是功能和效率差点)也可以满足你部分欲望,估计等你搞完,你也没有欲望了。
如果你有很多钱(可能性不大),那一切就不一样。。。。
kya_2001 2002-03-15
  • 打赏
  • 举报
回复
learning
oraclejava 2002-03-12
  • 打赏
  • 举报
回复
I don't know whether my idea is suitable. First if you just want to process the transactions(such as registry and accounting: this perhaps will seek the history) in the lobby, you need not create two or more tables to save the history and current data, just add the signature field to mark the history; or, if you want to obtain the historical reports such as statistic data, you can use the MSDTC to save or backup the marked data in a file (revoke the MSDTC to backup automatically), and when you want the report, you can select the data by union query.
kya_2001 2002-03-12
  • 打赏
  • 举报
回复
关注
huazai 2002-03-12
  • 打赏
  • 举报
回复
用实时数据库来保存临时数据,用关系数据库保存历史数据,定时把临时数据保存到历史数据库,配电自动化系统中往往采用这种办法,既要考虑到数据的实时性,又考虑到查询、添加等操作的快速性
顾君彦 2002-03-09
  • 打赏
  • 举报
回复
导表做个视图就解决了.
tx117 2002-03-06
  • 打赏
  • 举报
回复
我认为应该把业务数据和历史数据完全分开。
两方面的要求是完全不同的。
应该设计两套系统,一套是面向应用管理的,另一套面向数据挖掘分析。
定时进行数据的转移和抽取工作。
zyx_csu 2002-03-02
  • 打赏
  • 举报
回复
我认为你这种情况应该定义业务规则比较好,也就是你提到的第二种方法,对每一个客人入店的单子加一状态字段,可以视情况分为未审核和已审核(或再加一种已关闭),然后定义只有未审核的单据才可以修改和删除。而在统计汇总的时候,你提供包含未审核、包含已审核的选项给用户,从而基本上可以保证统计汇总的真实性。
如果你要作的好的话,你还可以作一个单据调整的功能,专门用来对已经审核但又发现有错的单据进行更改。或者你可以提供一个反审核的功能也差不多。
Tommy Chang 2002-02-06
  • 打赏
  • 举报
回复
1。什么叫历史数据?这恐怕才是问题的关键。
2。采用ODS(operation data store)的概念来改造系统,可能更容易实现。
3。数据仓库的立足点之一就是对于数据的描述一定是准确和唯一的,这就要求metadata的管理严格,首先要回答问题1

很难说数据仓库能帮到多少,主要看你所需要定义的动态和静态报表的情况,即所谓业务查询的规则。通常,如果不牵扯很多复杂、多组合条件的动态报表,则数据仓库作用就不很大。

:)
dkwu 2002-02-05
  • 打赏
  • 举报
回复
回Oliver
在酒店系统中比较好区分,如结帐走人了就定义为历史数据。但在其他系统如库存管理,历史与当前数据没有明确的界限。
Oliver 2002-02-05
  • 打赏
  • 举报
回复
由当前和历史数据库生成一个union视图,就可以对其操作了,但不可更新,要建相关连接,如建立明细结构就可以
dkwu 2002-02-05
  • 打赏
  • 举报
回复
回cobi
能否详细一点?
dkwu 2002-02-05
  • 打赏
  • 举报
回复
回free007
不行,因为还有其他的数据要查询
free007 2002-02-05
  • 打赏
  • 举报
回复
你在数据表里加上入住次数不行吗?每一位客人入住都有其入住次数,查询或操作时根据入住次数来提数据不好吗?
加载更多回复(2)

7,394

社区成员

发帖
与我相关
我的任务
社区描述
其他数据库开发 数据仓库
社区管理员
  • 数据仓库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧