大数据量的问题是很多面试笔试中经常出现的问题,比如baidu google 腾讯 这样的一些涉及到海量数据的公司经常会问到。
下面的方法是我对海量数据的处理方法进行了一个一般性的总结,当然这些方法可能并不能完全覆盖所有的问题,但是这样的一些方法也基本可以处理绝大多数遇到的问题。下面的一些问题基本直接来源于公司的面试笔试题目,方法不一定最优,如果你有更好的处理方法,欢迎与我讨论。
大数据量的问题是很多面试笔试中经常出现的问题,比如baidu google 腾讯 这样的一些涉及到海量数据的公司经常会问到。
下面的方法是我对海量数据的处理方法进行了一个一般性的总结,当然这些方法可能并不能完全覆盖所有的问题,但是这样的一些方法也基本可以处理绝大多数遇到的问题。下面的一些问题基本直接来源于公司的面试笔试题目,方法不一定最优,如果你有更好的处理方法,欢迎与我讨论。
Oren Eini(又名Ayende Rahien)建议开发者尽量避免数据库的软删除操作,读者可能因此认为硬删除是合理的选择。作为对Ayende文章的回应,Udi Dahan强烈建议完全避免数据删除。
所谓软删除主张在表中增加一个IsDeleted列以保持数据完整。如果某一行设置了IsDeleted标志列,那么这一行就被认为是已删除的。 Ayende觉得这种方法“简单、容易理解、容易实现、容易沟通”,但“往往是错的”
RESTORE DATABASE NewDataBase
FROM DISK = ‘C:\OldDataBase.bak’
with replace,
MOVE ‘OldDataBase_Data’ TO ‘C:\Program Files\Microsoft SQL Server\MSSQL\data\NewDataBase_Data.MDF’,
MOVE ‘OldDataBase_log’ TO ‘C:\Program Files\Microsoft SQL Server\MSSQL\data\NewDataBase_Log.LDF’
理想中的树型结构应具备哪些特点呢?数据存储冗余小、直观性强;方便返回整个树型结构数据;可以很轻松的返回某一子树(方便分层加载);快整获以某节点的祖谱路径;插入、删除、移动节点效率高等等。带着这些需求我查找了很多资料,发现了一种理想的树型结构数据存储及操作算法,改进的前序遍历树模型(The Nested Set Model)。
MVCC(多版本并发控制)是数据库中用以实现事务Lock-Free的方式之一。相对于传统的两段锁等方式的事务并发处理机制,MVCC在读写同时操作时并不需要加锁,而只在两个写操作同时进行时,才加一个互斥锁。其实现思想是展示给每个事务该事务开始时数据库的快照。
本周经过几天的文档阅读,根据TPCC,TPCE和TPCH三个标准的系统测试模型,抽象了如下的数据库测试系统通用模型(非分布式方式):
其中,数据生成模块用于产生测试过程中需要的数据参数,这些参数需要符合各个标准的要求,必要的情况下需要按照标准要求的方法进行生成。
终端模拟作为用户终端或机器终端的模拟器,执行数据生成模块生成数据的读取和预处理,并提交数据检查模块进行数据检查。同时,需要记录事务的起止时刻并传递到监控模块。
监控模块根据终端反馈数据计算测试的结果并完成报告。
应用逻辑将终端处理过的数据转译为SQL语句。
连接模块维护与SUT的连接。
SUT是待测试系统。
反SQL运动的主要倡导者都是Web和Java开发者,他们中许多人都在创业的初期历经了资金短缺并因此与Oracle说再见,然后效仿Google和Amazon的道路建设起自己的数据存储解决方案,并随后将自己的成果开源发布。现在,他们的开源数据商店管理着成百TB甚至PB的数据,由于Web 2.0和云计算的兴起,无论从技术上还是从经济上他们都无需再返回从前,甚至连想也不用想。
“Web 2.0的企业应该抓住机会,他们需要可扩展性,”总部设在伦敦的NoSQL会议组织者Johan Oskarsson说,他任职于著名的音乐网站Last.fm,其他的大多数与会者也都是网络开发者。
Oskarsson说,许多人甚至抛弃了MySQL开源数据库这个长期以来Web 2.0的宠儿,而改由NoSQL的方案来替代,因为优势实在是引人注目。51CTO.com之前曾报道过MySQL创始人宣布创建开源数据库联盟的消息,过度的商业化是MySQL失去原来的优势。
2009.7.6 阅读http://osdldbt.sourceforge.net/的Database Test Suite源代码,了解其基本设计思路。 2009-7-7 阅读TPC-C最新文档,了解TPCC测试时的数据库表结构,画TPC-C测试结构图 2009-7-8 继续看文档 2009-7-9 在武义,继续看文档 2009-7-10回来,看文档