经过一年的大一项目,我对关系数据库结构有所了解。有时我觉得这二维表不是很顺利。阅读一篇文章后,我有一个初步了解NoSQL,(https: / / / 敏锐。IO博客/ 53958349217 /分析黑客如何看待事件数据)。这篇文章写得很好,并写出来NoSQL在实际的使用情况,并使用Minecraft去分析它,但它可能不够全面。例如,刚才提到的文章,实体数据和关系数据与事件的NoSQL如何保存、如何保存,我想借我的文章,分析原始数据的关系数据库事件类型是如何存储数据,然后对两种存储方法做一个比较是原来是一个补充。

这类死亡,有两块数据,一个关于爬山虎和一个掉进岩浆爆炸。如果我有使用关系数据库的二维表,我将把它这样。(如果你不知道什么样的数据是这样的,你可以看看NoSQL存储的方法,这样看起来更清晰。)

这种情况的数据可以说在数据库设计中是一个更复杂的情况,因为它包含两个情况(当然不是只有两例,然后更多的结构将产生的),但不同情况下的数据表结构是不同的,这是很麻烦的。我们一般的解决方案是设计表四利用关系数据库,设计以下四种形式。(我把它写在这里)

第一个表


我#第一的协会,主要表需要一个ID,这是没有什么区别,因为默认的NoSQL一般会有一个_id
时间戳#所有常见的部分可以在一个表中存在。
原因
player_uid
player_experience
因为它是一个数组的任意长度的player_age为player_inveneory_id #,只能保存在另一个表。




二表(对爬山虎的死)


这是我#表身份后可以与其他形式的关联
在主表中#协会
enemy_type
enemy_power
enemy_distance
enemy_age



第三个表(熔岩死亡的死亡)


这是我#表身份后可以与其他形式的关联
在主表中#协会
place_x
place_y
place_z




表第四(节约player_inveneory)


这是我#表身份后可以与其他形式的关联
在主表中#协会
inveneory




在这一点上,关系数据库设置了事件的这个不同的结构,后面是(我不画表)。


一
时间戳的原因player_uid player_experience player_age ID
12013-05-23t1:50:00-0600 爬山虎99234890823 8873729228
22013-05-24t23:25:00-0600 熔岩99234890823 8873722

二
ID中enemy_type enemy_power enemy_distance enemy_age
11爬行。887 3.34.6677

三
ID中place_x place_y place_z
1245.366 -13.333 -39.288

四
ID中inveneory
11戴梦得剑
21 火炬
32 石头



在这一点上,我们用关系数据库保存了两个事件数据。

让我们在NoSQL的存储方法看,因为每个数据不受领域限制(列名),可以直接保存不表。(例如,JSON格式)


第一#数据
{
时间戳:2013-05-23t1:50:00-0600
原因:爬山虎
敌人:{
型:爬山虎
权力:887。
distance_from_player :3.34
年龄:6677。
},
播放器:{
用户:99234890823
经验:8873729,
年龄:228,
inveneory :{戴梦得剑
}
}
#二数据
{
时间戳:2013-05-24t23:25:00-0600
原因:熔岩
位置:{
X:45.366
Y:-13.333
Z:-39.288
}
播放器:{
用户:99234890823
经验:88737,
年龄:22,
inveneory :{石头}
}
}


下面我们分析NoSQL这种数据存储方法的好处



1。首先,它是离散表结构的集成,因此应该将数据放在一起。

这就像在C语言中打开多个数组或使用结构数组的区别。把一些关系数据放在一起是人类的自然想法。当然,它将使人们更舒适,并改善关联和升级的简洁性。

2。存储更方便

让我们考虑一下如何存储它的数据。

对于二维表数据库:

1。数据分析是该类型

2。存储主表数据并返回到id

3。分,加上主表的ID,存储数据的熔岩或爬行在不同情况下的表

4。开环,插入多条记录到inveneory表

这只是一个简短的介绍。它还考虑了多个表操作时的数据回滚问题,实际上写了大约30行左右,因此错误可能大大改善。

对NoSQL类型

在一个词uff1a

插入(数据);#伪代码

事实上,您知道,当您获取数据时,原始关系数据库将是相同的。

3.nosql是动态生成和存储更方便。它要灵活得多。至少,我们可以在存储数据时设计数据库。

当然,如果存储不是事件或者类似的数据,那二维表还有很多自己的优点,这是我个人的分析。当然,有许多共同的意见。以下是两种数据库模型的一些公认的优点和缺点。我也这么认为。



关系优势:

1。事务处理——保持数据的一致性;

2。由于标准化,数据更新的开销非常小(同一字段基本上只有一个);

三.可以执行复杂查询,如连接。



关系型缺陷:

1。扩展难度:因为有一个多表查询机制,如连接,它使数据库难以扩展。

2、读写慢:这种情况主要发生在数据量达到一定规模的情况下,因为关系数据库的系统逻辑非常复杂,容易产生并发问题,如出生死亡锁等,导致其读写速度下降非常严重。

三.高成本:企业数据库的许可价格非常惊人,并且随着系统规模的增加;

4。有限的支持能力:现有的关系的解决方案不能支持海量数据的存储,如抛媚眼;



NoSQL的优势,主要体现在以下几点:

1,一个简单的扩展:一个典型的例子是卡桑德拉,因为其结构类似于经典的P2P,所以它可以很容易增加新的节点扩展类。

2、快速读写:主要的例子是redis。由于其简单的逻辑和纯内存操作,其性能非常出色。单个节点每秒可以处理10万多个读写操作。

三.低成本:这是大多数分布式数据库的共同特点,因为主要的来源是开源软件,并且没有昂贵的许可费用;



在NoSQL数据库有很多不足之处,主要有以下:

1。不支持SQL:如果不支持SQL这样的工业标准,用户将有一定的学习和应用程序转移成本。

2、支撑功能不丰富:现有产品功能相对有限。大部分的NoSQL数据库不支持事务,他们也没有提供额外的功能,如MS SQL Server、Oracle、Bi等报道。

三.现有产品还不够成熟:大部分产品还处于初级阶段,几十年的关系型数据库也不尽相同。