RavenDB建模--ACID模式和BASE模式
本专题最后一节,我们将学习 RavenDB 中常用的两种模式:ACID和BASE模式。首先我先来简述一下什么是 ACID和BASE。
- ACID 是数据库事务正确执行的四个基本要素的缩写。指 DBMS 在写入或更新资料的过程中,为保证事务是正确可靠的,所必须具备的四个特性:原子性(atomicity)、一致性(consistency)、隔离性(isolation)、持久性(durability)。
- BASE 是为了解决解数据库强一致性引起的问题而引发的可用性降低而提出的解决方案。BA指的是基本可用(Basically Available)、S指的是软状态(Soft state)、E指的是最终一致性(Eventually consistent)。
这两种模式在 RavenDB 中都有用到,但是各有利弊。虽然完全一致的迷哦行使得数据建模和数据库易于构建和推理,但构建和维护的成本是非常高的。在分布式系统中,要确保原子性成本也是很高的,每进行一个操作都要和多台机器对话。
在 RavenDB 中,使用文档或附件 ID对文档或附件的所有操作(增、删、改)始终是一致的,并且它们是在事务中运行的。对文档集的批量操作则是由由多个单独的事务组成,而不是由一个庞大的事务去执行。默认情况下,当我们将文档保存到 RavenDB 中并且数据以持久的方式保存在一个节点上时,就确认文档已经保存成功。当然,为了提高数据的安全性,还可以要求文档在多个节点上持久时才确认文档已经保存。(这些内容我将在后续的专题中讲解)
数据库管理员必须做的一项权衡操作是选择数据库需要多少索引。 索引过多的话写入过程有可能会停止,没有足够的索引查询将进行全表扫描。之所以权衡需要多少索引,是因为事务必须在文档每次更改时更新所有相关索引。这也就说明索引的更新就位于更新数据的主要途径中,这就解释了为什么错误的索引能严重地降低性能。
RavenDB 中的索引是作为异步任务处理的,每当数据库有更新时都会在后台运行相关索引更新。我们不必在完成写入之前等待索引完成更新,这样我们就可以做一些优化,比如可以将不同事务中发生的多个更改汇总到同一索引批量更新。同样,这也使我们能够即时确定一些操作的优先级,如果现在 RavenDB 负载很大,那么我们可以减少编制索引所花费的时间以便为更多请求提供服务,这遵循一种思想,即我们总是希望能够尽快的从 RavenDB 中返回结果。RavenDB 中的索引的更新在某种程度上可能会落后于它们所反映的文档,但是一般来说文档更新和索引更新之间的时间差通常以微秒为单位进行度量。索引的性质使我们能够实现许多理想的属性,向系统添加索引不会阻止任何对内容的操作,并且可以并行更新索引定义,因此可以利用索引进行各种优化。当然,如果你需要在操作完文档后让 RavenDB 等待索引更新完成也是可以的,但是在实际开发中这个功能并不是优先选择的。
TIP:在这里需要注意查询、批量操作和对特定文档的操作之间的区别,这些操作作为事务发生,利用索引的性质可以降低查询和写入的成本,并根据具体情况有选择地应用决策。
RavenDB建模--ACID模式和BASE模式相关推荐
- 强势解析 eBay BASE 模式、去哪儿及蘑菇街分布式架构
互联网行业是大势所趋,从招聘工资水平即可看出,那么如何提升自我技能,满足互联网行业技能要求?需要以目标为导向,进行技能提升. 本文主要针对分布式系统设计.架构(数据一致性)做了分析,祝各位早日走上属于 ...
- 强势解析eBay BASE模式、去哪儿及蘑菇街分布式架构
互联网行业是大势所趋,从招聘工资水平即可看出,那么如何提升自我技能,满足互联网行业技能要求?需要以目标为导向,进行技能提升,本文主要针对高并发分布式系统设计.架构(数据一致性)做了分析,祝各位早日走上 ...
- 解析eBay BASE模式、去哪儿及蘑菇街分布式架构
目录: 问题分析 概念解读 Most Simple原理解读 eBey.去哪儿.蘑菇街分布式事务案例分析 参考资料 1.问题解析 要想做架构,必须识别出问题,即是谁的问题,什么问题. 明显的,分 ...
- 不懂这些高并发分布式架构、分布式系统的数据一致性解决方案,你如何能找到高新互联网工作呢?强势解析eBay BASE模式、去哪儿及蘑菇街分布式架构...
互联网行业是大势所趋,从招聘工资水平即可看出,那么如何提升自我技能,满足互联网行业技能要求?需要以目标为导向,进行技能提升,本文主要针对高并发分布式系统设计.架构(数据一致性)做了分析,祝各位早日走上 ...
- 重温经典之《企业应用架构模式》——.NET中的架构模式运用 (Base Patterns 1)
今天看看几个基本模式,这包括Gateway模式,Mapper模式,LayerSupertype模式和Separated Interface模式. 在这本书的最后一章,Martin Fowler放了一大 ...
- 企业级数据仓库:数据仓库概述;核心技术框架,数仓理论,数据通道Hive技术框架,HBase设计,系统调度,关系模式范式,ER图,维度建模,星型/雪花/星座模式,数据采集同步,业务数据埋点,数据仓库规范
文章目录 第一章 数据仓库概述 1.1 数据仓库简介 1.1.2 什么是数据仓库? 1.1.3 OLTP 与 OLAP 1.2 数据仓库技术架构 1.3 课程目标 第二章 核心技术框架 2.1 数据仓 ...
- 面向对象建模技术之设计模式——组合模式
本文内容可以直达下载ppt详细版本: 面向对象建模技术--17种设计模式的详细介绍-行业报告文档类资源-CSDN下载 或选择各种知识的综合大礼包: 面向对象建模技术+UML+各种模型图+统一建模语言+ ...
- 分布式事务——分布式事务简介、分布式事务框架 Seata(AT模式、Tcc模式、Tcc Vs AT)、分布式事务—MQ
分布式事务--分布式事务简介.分布式事务框架 Seata(AT模式.Tcc模式.Tcc Vs AT).分布式事务--MQ 一.分布式事务简介 如果不是分布式环境的话一般不会接触到这种,一旦是微服务这种 ...
- 操作系统学习:实模式进入保护模式
本文参考书籍 1.操作系统真相还原 2.Linux内核完全剖析:基于0.12内核 3.x86汇编语言 从实模式到保护模式 ps:基于x86硬件的pc系统 保护模式相关介绍 从实模式进入保护模式其实经历 ...
最新文章
- POJ 2185 正解 KMP
- 数字IC设计bilibili-Designer Compiler的理论笔记+实操
- 三星s9android recovery,三星S9+刷第三方中文twrp recovery工具和教程
- Postfix 队列清理
- why my own list cannot automatically scroll to load oData
- 蚂蚁借呗和京东金条全面对比,哪个更划算?
- 组策略:交互式登录:不显示最后的用户名
- 怎么给iOS项目打包
- 2021-06-23元素的排列,浮动和display
- 两个网口芯片接一个变压器_电路中网络变压器件选型和PCB
- 撤销工作表保护密码忘记了怎么办?
- Linux 常用软件
- word html 预览 打印出来,word预览时文字在表格中,打印出来却没有.doc
- 微信小程序 display: flex 与inline-flex的区别以及应用
- 真实世界里的钢铁侠-特斯拉汽车创始人埃隆#183;马斯克(Elon Musk)
- 最好用的视频压缩软件压缩教程
- 手把手教你搭建SpringCloud项目(十)集成OpenFeign服务接口调用
- 大数据是什么,大数据的主要特点是什么?
- 小程序webview关注公众号_微信小程序和公众号互相跳转
- vba excel 开发游戏_自动化神器—VBA
热门文章
- 网络软件测试的IP地址,如何快速查出网内空闲IP地址
- 网店版重生系列:回头看Jboss配置项CatchSystemOut、Java2ClassLoadingCompliance、UseJBossWebLoader
- Arduino 下用A4988或TMC2209驱动42步进电机
- oracle中涨工资,oracle涨工资问题
- 谷歌联合创始人谢尔盖·布林(Sergey Brin):儿子引发了我对区块链技术的浓厚兴趣
- 2021-08-11王汕8.12黄金TD走势外汇黄金价格,现货白银TD投资操作策略
- Redis几种集群模式
- HK01BS单通道电容式触控芯片IC内置稳压LDO低压复位模块
- 2021年职业院校技能大赛“网络安全”项目-- 江西省比赛任务书全解析
- 续流二级管在电路的作用