您当前位置:首页 > 大数据

互联网技术架构——数据库扩展

发布时间:2019-05-07 14:06:05编辑:it技术社区网阅读次数:

需要继续以同步的方式实时发生问题的交易是一个很难解决的问题。尤其是当在两个单独的服务器,以保证交易的水平的完整性是非常困难的。当使用常规方法,分别对概念“挂起”交易(每个链路异步相对于所述交易的其他方面发生时),事务是存在于不同的数据库变得相对简单。

公知的两阶段提交协议:所述请求包括提交和执行阶段。鉴于提交请求阶段的,必要的特性的锁定过程中,成功只能被锁定有罪。如果它失败在任何阶段,整个过程将回滚。然而,该解决方案通过阻止该交易,在配电系统时,这些活动的实施可能导致死锁的现象,对于数据库的需求。


从商务智能交易处理灰色

独立的业务和生产系统,产品和分离的智能数据库系统。我们应该从应用程序逻辑数据库存储过程中移动。不这样做的公司和产品系统之间,同步调用。因为应用程序逻辑被放置在数据库中,它可能会影响可伸缩性。拴在公司的制度和系统的产品价格昂贵,这也将影响造成的可扩展性和可用性问题。

由于许可证和独特的系统特性,成本和扩大公司的内部数据库系统可能会高。因此,我们希望他们能够专注于一个特定的任务。对于数据库,我们希望它是特定的交易中,而不是智能产品。对于后台办公系统,生产系统,我们不想扩大这些系统连接的能力。因此,为了用于发送异步数据服务系统中的方法。

理想情况下,我们要按照自己的需要独立的系统扩展一切。当这些系统连接在一起,系统的要求,需要以相同的速度扩张。在一些情况下,像数据库来执行业务逻辑,该系统的扩展可以是更昂贵的。

为了提高可用性,我们希望能够异步数据系统之间移动。ETL系统被广泛用于这一目的,我们可以使用开源工具构建自己的ETL过程。


请注意,数据模型之间的关系

然后,在维修成本损坏的数据实现模型是相当大的。因此,数据模型的设计,增添表/列,编写查询,看长远点如何实体之间的关系会影响效率和可扩展性。在数据模型的设计,数据库单独考虑和未来可能的数据需求。设计实例,考虑到未来可能出现的数据需求,如何分割数据库和应用系统。

需要提出的扩大和调节的程度之间的折中可以,通常是为了提高可扩展性,我们必须减少规范程度。当你需要不需要产品的可扩展性和ACID属性,NoSQL的解决方案可能是适当的。

当连接到SQL查询表,并由于表现不佳,并且调整查询不起作用,选择创建一个视图,物化视图,总之,这些可以预先连接表。另一种选择是查询不连接,但是数据组返回的应用程序,并允许在存储器中的应用程序的连接。


正确使用数据库锁

当注意力孔明锁代码审查。当监测数据库暗锁,并明确必要的调整,以保证有足够的吞吐量。锁定类型和颗粒尺寸选择为允许灵活性和数据库存储引擎。为了最大限度地提高吞吐量和并发数据库。

通过收集数据,分析历史信息数据库性能统计数据,我们可以选择不看正确的锁优化不合适类型的锁强制性的数据库的类型和用途。例如,保证ACID默认数据库表锁的前提下,改用更低级的行锁并发。

我们也可以读操作拆分数据库的多个副本,并强制将在副本被写入。或者它可以是基于竞争部分,分割成多个数据库表的。或用户特定数据可以存储在多个多个表,以这样一种方式,以减少表的大小,从而这些实体的竞争分散。


禁用分阶段提交

分阶段提交是阻塞性协议,不允许其他事务,直到它完成。因此,当分割数据存储和处理系统,我们使用在Y轴或Z轴,相控提交协议不应该被用于存储或处理交易。

我们应该用更聪明的方式来整合分散的数据库表,而不是试图使用多阶段提交协议延长单体数据库的生命。


注意选择更新

FOR UPDATE会导致行锁,事务处理速度可能会减慢。因此,光标的定义,SELECT FOR UPDATE语句尽量少用。

光标是一个功能强大的结构,如果使用得当,加速了交易的条款,这使得程序更加方便快捷。然而FOR UPDATE光标可能会导致长期持有锁定,同时减缓交易时间。每次使用前,参考数据库文档,以确定是否减少了需要使用FOR UPDATE锁。

一般情况下,我们无法控制光标的生命周期。所以锁定记录产品可能导致缓慢的,甚至死锁。

请注意,某些数据库,FOR UPDATE光标到默认值。开发人员和DBA应该是指数据库文档,以确定如何发展光标用小锁范围。


避免选择所有列

不要在查询中不使用SELECT *。而你总是有选择或在查询中插入数据列。因为当在该表的结构的变化,所有列容易发生故障在选择的查询,并因此不必要的数据传输。

当一个新列被添加到INSERT语句中的表也应指定列,或者,我们将有问题。


本文链接:互联网技术架构——数据库扩展

友情链接:

大悲咒经文 观音心经 佛经