数据中心
如何分层按照在线-离线、对时延的要求,可以把数据存储分为: L0:T+0L1:T+0L2:T+1 其中 L1 是 L0 的穿透防御层,但延时会稍微更高。L0 是 10ms 查询层,不是全量数据。L1 是 100ms 查询层,是全量数据,L0 和 L1 都支持轻度分析操作。 L2 是全量数据,可以支持复杂大型查询。 设计 L 的分层要考虑数据的: 是否全量:数据量大小,这要求我们关注我们技术选型的 scale 能力,特别是数据线性增长以后,性能是否线性增长。 是否全维度:这要求我们关注我们技术选型的 schema 建模能力。 延时要求:这要求我们关注我们技术选型的查询执行模型。 查询复杂程度要求:这需要关注我们的技术选型支持的查询语言。 如何迁移数据数据迁移问题 = 制造新从库问题 + 读写切换的问题 寻找一个时间点,使用备份进行冷启动,然后通过类似 binlog 制造新从库的机制进行追踪(对于 update 和 delete,都可以设置简单的幂等机制,insert 的幂等要防异常)。 框架进行数据校验:主键范围查询,md5...
ElasticSearch 总结
ES 思维导图ElasticSearch总结.xmind ES 的定位 ES 是 build on top of Lucene 建立的可以集群化部署的搜素引擎。 ES 可以是 document store(此处可以理解为文档仓库或者文档存储),可以结构化解决数据仓库存储的问题。在 es 中一切皆对象,使用对象对数据建模可以很好地处理万事万物的关系。 ES 是海量数据的分析工具能够支持:搜索、分析(这一条其实我们很少用到)和实时统计。 ES 的架构有优越的地方: 自己使用 pacifica 协议,写入完成就达成共识。 节点对内对外都可以使用 RESTful API(or json over http)来通信,易于调试。 因为它有很多很好的默认值,api 也是 convention over configuration的,所以开箱即用。 它天生就是分布式的,可以自己管理多节点-它的路由机制是一个方便的,需要优化也可以优化的机制。 ES 的架构ES 是基于 Lucene 的,集群上的每个 node 都有一个 Lucene 的实例。而 Lucene 本身是没有 type...
如何画架构图
前言 有意义且具备一致性(coherence)的架构图有助于为不同的利益相关者(stakeholder)澄清(illustrate)事实,并达成共识-反之,图表杂乱无章。 有意义的图表胜过建模(建模指的是With modelling, you're building up a non-visual model of something (e.g. the software architecture of a software system), and then creating different views (e.g. diagrams) on top of that model.),在架构沟通上,visualization 胜过千言万语。 一致性要求我们有足够好的指导原则,让我们知道标准的图元是什么。 “架构是一项复杂的工作,只使用单个图表来表示架构很容易造成莫名其妙的语义混乱”。 在同一个架构图里添加不同层级的抽象可能会导致冲突的出现,因为它们是从不同的角度描述问题的。 应该在架构图旁边加上图例(legend),沟通者应该懂得图元(key)是什么。key 和...
MySQL 存储引擎 InnoDB 技术内幕
这本书的电子版的一个博客。 InnoDB.xmind 前言MySQL 是处理海量数据(尤其 是OLTP 写入)时仍能获得最佳性能的最佳选择之一,它的 CPU 效率可能其他任何基于磁盘的关系型数据库所不能匹敌的-但它应该能够匹敌 Redis。 Think Different 而不是 Think Differently,这意味着要思考不同的东西,而不只是思考不同的方式。 不要相信网上的传言,去做测试,根据自己的实践做决定。很多伟大的作者写的伟大的书里面,关于性能的说法都来源于他们个人的随身电脑的直观测试。 change buffer 是 inert buffer 的升级版本。 MySQL 体系结构和存储引擎定义数据库和实例 数据库:物理操作系统文件或其他形式文件类型的集合。 实例:操作系统后台进程(线程和一堆共享内存)。 存储引擎:基于表而不是基于库的,所以一个库可以有不同的表使用不同的存储引擎。 InnoDB 将数据存储在逻辑的表空间中,这个表空间就像黑盒一样。 存储引擎不一定需要事务。比如没有 ETL...
数据库容灾体系的演变
什么是容灾 备份的分类 备份方式 说明 逻辑备份 数据库对象级备份,备份内容是表、索引、存储过程等数据库对象,如MySQL mysqldump、Oracle exp/imp。 物理备份 数据库文件级备份,备份内容是操作系统上数据库文件,如MySQL XtraBackup、Oracle RMAN。 快照备份 基于快照技术获取指定数据集合的一个完全可用拷贝,随后可以选择仅在本机上维护快照,或者对快照进行数据跨机备份,如文件系统Veritas File System,卷管理器Linux LVM,存储子系统NetApp NAS。 规划要结合业务,产生多维立体的解决方案。
从美元周期看大国经济战
...
MySQL 压缩
压缩算法Table CompressionInnoDB存储引擎是按照索引组织表(index-organized table)的方式组织数据的,数据存储在B-tree索引(clustered index/primary key & secondary index)中。Table Compression是针对整个表,和相关索引进行的,而不是单独的数据行。 B-tree页经常被更新,InnoDB会尽量减少B-tree节点的分裂(split),减少不必要的压缩和解压页。为此,InnoDB在每个B-tree页中都预留了未压缩的“modification log”空间,记录页的变更。对于update和insert的数据量较小时,会先写入“modification log”,不用立刻重构整个页。当“modification...
分库分表
业界方案问题垂直拆分优点:降低负载,提高可用性 缺点: 无法降低单表数据量 不能无限扩容 存在单点故障 join 等多表操作受限 存在跨库事务 水平拆分优点: 降低单表数据量 理论上可无限扩容(NoSQL 通常采取这种方案) 不存在单点故障 缺点: join 等多表操作进一步受限 存在跨库事务 扩容成本高 如何分hash 分表常见的分表方案。 range 分表建立时间 range,按 range 分表。 混合分表先 hash,再 range。 怎么查 SQL 路由(route)和结果合并(merge) 多表 join 多维度查询 跨库事务 路由要定义 dsl,用语言解析表达式。 做广播表的查询的结果就是一张逻辑表查询转成多张表查询。 如果要做无分表键的查询,不如做影子表做侧维度。但影子表依赖于数据迁移服务。数据迁移服务的存在在日常的数据库运维中非常重要,它可以支持任意的 etl 的形式来同步异构数据。但这会带来成本上的坑。
货币价值的变迁
FROM:https://mp.weixin.qq.com/s/QynjLKnXsix4apKn4RWh5g 1....
货币、信贷与债务
FROM:https://mp.weixin.qq.com/s/h14q5BVSSWsNgU5K6bMEVw 货币系统:大多数货币和信贷(尤其是现存的法币)并无内在价值。所有货币要么被摧毁,要么贬值。而当这发生时,财富就会以一种浩荡的方式转移,从而在经济和市场中产生巨大的反响。然而,拥有储备货币的国家更容易摆脱大量借贷(即创造信贷和债务)或者发行巨额货币的窘境,因为储备货币可用于世界各地的支出,所以其他国家倾向于持有这些债务。 经济周期由短期债务周期和长期债务周期构成 短期债务周期:通常持续8年左右,或多或少。时机取决于“兴奋剂”将需求提高到实体经济生产能力极限所需的时间。与短期债务周期相比,长债务周期需花费我们一生时间才会完成,因此大部分经济学家在内的大众根本没有意识到长期债务周期的存在。 长期债务周期:通常持续约50至75年。 拥有储备货币地位对国家意义重大,相对于美国经济规模而言,其规模是巨大的。 2008年以来,央行在MP2(QE)的基础上开启了MP3的新范式 ,这意味着具有储备货币的中央银行创造货币和信贷的能力几乎没有或没有限制。...