当前位置:  技术问答>java相关

[讨论] 我看www.csdn.net。问题2:大家把大对象放在哪里?有感于满论坛的“怎么操作Blob”以及CSDN上面很多的404 Not Found

    来源: 互联网  发布时间:2015-07-21

    本文导语:  内容管理(Content Manager)是一个当今的热门话题。当RDB已经很好的解决了结构化数据的存贮需求,对于如果存储管理占据数据存储90%以上的非结构化的数据,例如HTML(15TB),Internet上的其他文件(100TB),硬盘上的(1000P...

内容管理(Content Manager)是一个当今的热门话题。当RDB已经很好的解决了结构化数据的存贮需求,对于如果存储管理占据数据存储90%以上的非结构化的数据,例如HTML(15TB),Internet上的其他文件(100TB),硬盘上的(1000PB),存储设备上的(20EB),模拟信息(300EB),却一直没有得到很好的解决。
注数据来源于Almaden(1998)

我日前去看了中国国际数字化公众信息服务与技术展览会,糟糕的很,硬件厂商,系统集成商,等等很多各种企业和公司在做一些和论题无关的东西,很多厂商把网站制作系统也搬来了(没有软件厂商)。因为公共信息服务对内容要求很高,但这个展览却体现出这个市场的混乱。这足以证明至少在这个领域,内容管理是个模糊不清的概念,是不受重视的。

我感兴趣的是,对于各位来说,大家平时都是怎么存储大对象的?怎么去管理这些对象,怎么去维护大对象之间的关系?

方案1:使用数据库Blob,Clob等字段。
优点,数据一致性好,结构清晰。但是缺点太严重:结构不易扩充,严重影响数据库效率等等。这已经是一个绝对不可以使用的方案了,只能放弃。

方案2:使用文件系统+RDB。
这大概是现在用的最多的方法了。我希望能和大家讨论的也主要在这里。
这样的系统一般不会有性能问题,但是数据的一致性、完整性却难以维持。
例如我去展览会的时候有个公司是做网站系统的,对于网页上的图片他们是采用上传的方式,而且和正文一样被放在文件系统中。但是如果正文被删除,图片却被留在了文件系统……这样的例子很多。

拿CSDN为例,CSDN的帖子正文数据库中一份(varchar 8000?),文件系统一份(就是大家看到的XML)。大家浏览的时候也都遇到过404 Not Found的错误。我不想讨论CSDN,大家来说说,各位在做这种工作时怎么维护数据的一致性和完整性?怎么处理异常?怎么去管理数据?

|
when I'm at work. I only have english. only have win2k at my home pc.
if add file, really don't think garbage file is a big issue. even db has to do automatic recovery to cleanup garbage at power outage. you can run maintenance job to clean those garbage file up.

yes, my approach requires big transaction, that's not necessary.
just 
create file
delete and return if fail
begin tran
update db
rollback delete file and return if fail
commit tran.


for update file, that's a big headache.
maybe we can do this:
create file
delete file and return if fail
begin tran
update db with the new file name
delete file rollback and return if fail
commit
delete the old file

|
to leonzhao(灯泡):

因为这是一个很便宜的方案,我们做,拿到的不到2人月。所以我认为这是这个设计的优点。

哪个公司真的就不方便说了,请谅解。

regards

T.

|
这个问题好象还没有很好的解决办法,数据一致性的问题肯定会存在.
不过话说回来,如果没有这样的问题,还要系统管理员做什么啊!?
当然如果能根据这样的系统做一个特定的事务到是不错,也就是说,RDB中有该文件的记录文件不能删,文件存在,RDB中的数据也不能删,但真的要这样的话,恐怕只有MS做的出,因为只有他们才有自己的OS呀!
大家说说看有什么好方法能保持数据完整性!?

|
对于数据库的事务处理是没有问题的,主要是文件的问题。
先执行增加记录,然后上传文件。

开始数据库的事务;
新增加RECORD;
if 失败
{
  回滚;
  return;
}
commit;
存储文件;
(可能要很长时间,或断电)
if 失败
{
  return;
}

1.如果记录保存不成功,文件上传也不会成功。(这种情况是正常的)
2.如果记录保存成功,而可能文件没有上传成功。(这种情况也可能发生)
3.如果记录保存不成功,而可能文件上传成功。(这种情况好象以上代码不可能发生)
4.如果记录保存成功,文件上传成功。(这种情况是正常的)

由此针对第2种情况,记录被保存,而文件没有上传,所以只要删除记录就可以了,怎么去确定哪些记录的文件没有上传成功呢?可以用以数据表中记录去遍历文件名,如果文件不存在,则删除该记录。

不知以上分析有没有问题,帮忙分析并指出。

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 关于Dialog的面向对象设计(只要是有意义的讨论都给分)
  • 讨论“面相对象&构件技术”在程序设计里面的运用。欢迎各位高手菜鸟灌水~~
  • 大家对绘图技术不感兴趣嘛!那就讨论一下网络吧!请问如何通过http访问远程对象。
  • 讨论一下Linux中的面向对象
  • 大家来讨论一下关于String对象的"=="问题!
  • Java 可以做拨号程序吗?我只是和大家讨论讨论 不必太认真
  • 欢迎高手来讨论:关于文件格式的大讨论
  • 参数传递的问题!(大家讨论讨论)
  • 用java开发一个基于Proxy(代理)的网络计费系统。有兴趣的来讨论讨论
  • 哪位高手有兴趣跟我讨论讨论java中调用dll文件??小弟有些问题还是不很清楚??
  • 【讨论贴】gcc开发的时候有大家都有什么好的调试方法,来讨论下
  • 和Java版高手在线讨论代理服务器的问题,讨论者都有分。
  • 讨论讨论,当错误发生时,并用if语句测试出时,应该返回怎样的值
  • 一个面试,是“北京华胜六所”外包给风河(VxWorks)北京研发处,做linux内核开发,大家过来讨论讨论
  • 新建了个QQ群(软件与创业),希望有兴趣的朋友进来讨论讨论软件项目、产品、创业、管理、投资等(代码之外的)观点和想法
  • Java 访问控制的问题(public,private,protected,(default))!讨论讨论!
  • 用java做c/s结构可行吗???大家来讨论讨论,应该都会有收获。
  • 这两天本版人气不高,我来发个问题,有关互斥同步的。大家讨论讨论
  • 有没有人讨论value object模式
  • http://www.itpub.net 论坛更换数据库,速度更快,欢迎大家前去讨论!
  • 讨论“内存泄漏”
  • 参数传递的问题!(大家讨论讨论) iis7站长之家
  • 大家一起讨论讨论,suse和ubuntu的区别,顺便散散分
  • 对大家很有意义的一个问题,建议大虾、菜鸟们都来讨论讨论#¥#·#¥·#%#¥%#¥%
  • 大家来讨论一个最实际的问题:)


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3