NoSQL
文章平均质量分 79
本人学习NoSQL技术的一些笔记和心得。
嘿哈哈哈
人生就像一场演出,不到谢幕永远不知道自己有多精彩。
展开
-
读书笔记:《七周七数据库》
概述核心问题:哪种数据库或数据库组合最好地解决了你的问题?关系型数据库:PostgreSQL以集合理论为基础,实现为具有行和列的二维表;使用结构化查询语言编写查询;表可以连接并转化为新的、更复杂的表。键值型数据库:Riak & Redis类似于映射(哈希表)。多列型数据库:HBase一个给定列的数据存放在一起,和按行保存信息的关系型数据库不同;允许表保持稀疏,而不会产生空值的存储成本。文档型数据库:MongoDB & CouchDB存储文档,原创 2020-10-11 15:49:52 · 473 阅读 · 0 评论 -
NoSQL:混合持久化
我们不能只用一种“数据库引擎”(database engine)来应对所有需求,要使用不同的数据库来解决不同的问题,为每种问题选择最合适的数据库。例如,关系型数据库善于确保数据之间确实存在关系,然而如果要探寻关系,或是从不同表中找出属于同一对象的数据,那么使用关系型数据库就很困难了。这种解决持久化问题的混合方式(hybrid approach)定义为“混合持久化”(polyglot persis...原创 2018-10-18 21:17:42 · 921 阅读 · 0 评论 -
NoSQL:模式迁移
数据库模式变更脚本最好能在开发阶段编写,因为这样做可以把模式变更信息与数据迁移脚本存在同一份脚本文件中。但是很多时候,我们需要修改已经上线的数据库的模式。在NoSQL的应用程序改变模式后,必须把既有数据全都转化成新模式才行。还有一个很常用的解决办法,就是确保改变模式之前的那些旧数据仍然可以为新代码所解析,而在保存时,将其以新模式写会数据库。这种渐进迁移数据的技术,就叫“增量迁移”(increm...原创 2018-10-18 21:05:05 · 437 阅读 · 0 评论 -
NoSQL:图数据库
图数据库可存放实体及实体间关系。实体也叫“节点”(node),它们具有属性(property)。可将节点视为应用程序中某对象的实例。关系又叫“边”(edge),它们也有属性。边具备方向性(directional significance),而节点则按关系组织起来,以便在其中查找所需模式。用图将数据一次性组织好,稍后便可根据“关系”以不同方式解读它。什么是图数据库查询图也称“遍历”(trave...原创 2018-10-15 22:17:13 · 940 阅读 · 0 评论 -
NoSQL:列族数据库
列族数据库可以存储关键字及其映射值,并且可以把值分成多个列族,让每个列族代表一张数据映射表(map of data)。下表是关系型数据库Oracle和列族数据库Cassandra的术语对比:OracleCassandra数据库实例(database instance)集群(cluster)数据库(database)键空间(keyspace)表(table)...原创 2018-10-15 21:50:44 · 8842 阅读 · 1 评论 -
NoSQL:文档数据库
“文档”是文档数据库中的主要概念。此类数据库可存放并获取文档,其格式可以是XML、JSON、BSON等,这些文档具备可述性(self-describing),呈现分层的树状结构(hierarchical tree data structure),可以包含映射表、集合和纯量值。数据库中的文档彼此相似,但不必完全相同。文档数据库所存放的文档,就相当于键值数据库所存放的“值”。文档数据库可视为其值可查的...原创 2018-10-15 21:07:04 · 12429 阅读 · 0 评论 -
NoSQL:键值数据库
键值数据库(key-value store)是一张简单的哈希表(hash table),主要用在所有数据库访问均通过主键(primary key)来操作的情况下。应用程序可以提供键和值,并将这一键值对持久化。假如键已存在,就用新值覆盖当前值,否则就新建一条数据。下表是关系型数据库Oracle和键值数据库Riak的术语对比:OracleRiak数据库实例(database ...原创 2018-10-14 17:34:02 · 12073 阅读 · 0 评论 -
NoSQL:映射-化简
“映射-化简模式”(map-reduce pattern)是一种安排数据处理流程的手段,可以利用集群中的多台计算机,同时又能将某台计算机所需的数据及处理工作尽量放在本机执行。基本“映射-化简”映射是一个函数,其输入值是某个聚合,而输出值则是一大把键值对。化简也是一个函数,可以接受多个关键字相同的映射操作输出值作为其输入参数,然后将之合并。分区与归并我们可以将映射函数的输出数据分区,以...原创 2018-10-12 15:44:42 · 329 阅读 · 0 评论 -
NoSQL:版本戳
虽然NoSQL不支持事务,但是面向聚合的NoSQL数据库在聚合内部支持原子操作,所以可以选择以聚合为单位来更新数据。但是即使是支持事务,事务系统也有其局限性,比如有些无法封装到一个事务里的更新操作,这些问题可以通过使用版本戳来解决。商业事务与系统事务一般所说的事务为商业事务,例如用户浏览商品目录,选中购买物品,填写订单信息。而只有在用户下单购买的时候,才会在数据库中发生系统事务,因为这会锁住...原创 2018-10-12 15:23:38 · 518 阅读 · 0 评论 -
NoSQL分布式模型:一致性与持久性
放宽一致性约束:在权衡分布式数据库的一致性时,参与交互的节点越多,一致性就越好,但是每新增一个节点,都会使交互操作的响应时间变长。我们可以根据用户对陈旧数据的忍受程度,适当放宽一致性约束,只要求数据的最终一致性。放宽持久性约束:在某些场合,我们可以牺牲一些持久性以换取更好的性能。如果一个数据库大部分时间都在内存中运行,那么我们可以把更新操作直接写入内存,并且定期将数据变更写会磁盘。这会大大提高响...原创 2018-10-11 09:49:43 · 928 阅读 · 0 评论 -
NoSQL分布式模型:分片和复制
NoSQL是一种能够运行在大集群上的数据库,面向聚合的数据库非常适用于横向扩展。原创 2018-10-11 09:11:37 · 1634 阅读 · 0 评论 -
NoSQL数据库与关系型数据库
关系型数据库关系型数据库的价值获取持久化数据:关系型数据库最大的价值就是持久存储大量的数据。并发:关系型数据库通过“事务”来控制对数据的访问,事务机制可以在并发情况下运行良好而且在出现错误时,还能通过回滚事务保证数据不被破坏。集成:可以使用共享数据库集成,即将多个应用程序的数据保存在同一个数据库中,使所有应用程序很容易使用彼此的数据。关系型数据库的缺点:阻抗失谐关系模型和内存中的...原创 2018-10-11 08:41:38 · 442 阅读 · 0 评论