您现在的位置:新闻首页>水军

NoSQL数据建模技术

2017-12-18 00:42编辑:admin人气:


(6)降维Dimensionality Reduction

Dimensionality Reduction降维是一种技术可以允许把一个多维的数据映射成一个Key-Value或是其它非多给的数据模型。

Counting Unique Users using Inverse and Direct Indexes

适用性: Key-Value Store键值对数据库,Document Databases文档数据库,BigTable风格的数据库。

当树形结构被一次性取出时这会非常有效率(如:我们需要展示一个blog的树形评论)

这样,我们就可以把数据按UserID来排序,我们就可以很容易把同一个用户的数据(一个用户并不会产生太多的event)进行处理,去掉那些重复的站点(使用hash table或是别的什么)。另一个可选的技术是,我们可以对每一个用户建立一个数据实体,然后把其站点来源追加到这个数据实体中,当然,这样一来,数据的更新在性能相比之下会有一定损失。

当然,原子聚合Atomic Aggregates这种数据模型并不能实现完全意义上的事务处理,但是如果支持原子性,锁,或test-and-set指令,那么,Atomic Aggregates是可以适用的。

SELECT Values WHERE city="CA:San Francisco*" 

NoSQL数据建模技术

适用性: Key-Value Store键值对数据库,Document Databases文档数据库,BigTable风格的数据库。

但这样的SQL很没有效率,因为category数据太多了。为了应对这个问题,我们可以建立一个直接索引 {UserID -> [Categories]}然后我们用它来生成报表:

下面是正文:

适用性Key-Value Store键值对数据库,Document Databases文档数据库,BigTable风格的数据库。

传统的地理位置信息系统使用一些如“四分树QuadTree”或“R-Tree”来做地理位置索引。这些数据结构的内容需要被在适当的位置更新,并且,如果数据量很大的话,操作成本会很高。另一个方法是我们可以遍历一个二维的数据结构并把其扁平化成一个列表。一个众所周知的例子是Geohash(地理哈希)。一个Geohash使用“之字形”的路线扫描一个2维的空间,而且遍历中的移动可以被简单地用0和1来表示其方向,然后在移动的过程中产生0/1串。下图展示了这一算法:(陈皓注:先把地图分成四份,经度为第一位,纬度为第二位,于是左边的经度是0,右边的是1,纬度也一样,上面是为1,下面的为0,这样,经纬度就可以组合成01,11,00,10这四个值,其标识了四块区域,我们可以如此不断的递归地对每个区域进行四分,然后可以得到一串1和0组成的字串,然后使用0-9,b-z去掉(去掉a, i, l, o)这32个字母进行base32编码得到一个8个长度的编码,这就是Geohash的算法)

Key-Value Stores 和 Graph Databases基本上来说不会Value的形式,所以Value可以是任意格式。这样一来,这使得我们可以任意组合一个业务实体的keys。比如,我们有一个用户帐号的业务实体,其可以被如下这些key组合起来: UserID_name,UserID_email, UserID_messages等等。如果一个用户没有email或message,那么相应也不会有这样的记录。

Index Table索引表可以被认为是关系型数据库中的视图的等价物。

最小化“一对多”关系——可以通过嵌套式的方式来存储实体,这样可以少一些表联结。

首先,所有的商品Product都会有一个ID,Price和Description。

Composite Key Index

NoSQL数据模型设计比关系型数据库需要对数据结构和算法的更深的了解。在这篇文章中我会和大家说那些尽人皆知的数据结构,这些数据结构并不只是被NoSQL使用,但是对于NoSQL的数据模型却非常有帮助。

搜索和任何存取这个实体都会存在问题。

Graph data models图式数据库 可以被认为是这个进化过程中从Ordered Key-Value数据库发展过来的一个分支。图式数据库允许构建议图结构的数据模型。它和文档数据库有关系的原因是,它的很多实现允许value可以是一个map或是一个document。

(2)聚合Aggregates

所有类型的NoSQL数据库都会提供灵活的Schema(数据结构,对数据格式的限制):

对于关系型数据库来说,要设计这样的数据模型并不简单,而且设计出来的绝对离优雅很远很远。而我们NoSQL中灵活的Schema允许你使用一个聚合Aggregate (product) 可以建出所有不同种类的商品和他们的不同的属性:

(3)应用层联结Application Side Joins
(来源:大师兄)(关键词: 搜索引擎 电子商务 nosql数据库 正则表达式 nosql)

  • 凡本网注明"来源:的所有作品,版权均属于中,转载请必须注明中,http://www.dbo2.com。违反者本网将追究相关法律责任。
  • 本网转载并注明自其它来源的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品来源,并自负版权等法律责任。
  • 如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。






图说新闻

更多>>
X还在炒作,不如买8,实体店分期无压力

X还在炒作,不如买8,实体店分期无压力



返回首页