
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
JSON (JavaScript Object Notation)是一种轻量级的数据交换格式。它容易被人们阅读和编写,也容易被软件所读取和生成。
{
"Name" : "Jane Smith",
"DOB" : "1990-01-30",
"Billing" : [
{
"type" : "visa",
"cardnum" : "5827-2842-2847-3909",
"expiry" : "2019-03"
},
{
"type" : "master",
"cardnum" : "6274-2542-5847-3949",
"expiry" : "2018-12"
}
],
"address:
{
"street" : "9462, Fillmore",
"city" : "San Francisco",
"state" : "California",
"zip" : 94401
}
}
目前使用还不错。
如果只把JSON用在应用程序中不同层级间的数据交换上,那还好。而当人们开始要将其作为一种数据库存储格式来使用时,就不好了。当我第一次遇到将JSON作为一种数据库中的数据格式时,感到非常惊奇,因为数据库要花费不少代价,每一条记录里面键和值都要存,而且每次查询都要进行处理。
以下是达内长沙IT培训总结的经常会遇到的异议:
JSON是文本,它效率不高。
JSON没有没有可执行结构,毫无数据质量可言。
每一个文档(行)都得是键值对?你肯定是疯了才会这样做。
让达内长沙IT培训一个一个讨论这些异议。
1. JSON是文本,它效率不高。
如我们所知RDBMS在电子商务中起到至关重要的作用,甚至是即将到来的Web2.0时代,RDBMS也将在网站后台运行。当人类登月以后,交易花费从$5下降到$0.02,于此同时Jim Gray进行了最后一次航海旅行。这是因为在90年代,经过在RDBMS的巨大的努力和相关硬件供应商持续的改进下,赢得了TPC基准测试之战。Oracle发布了支持SUN的硬件的版本。Sybase打破了HP的记录。Informix击败SGI。IBM进行了内部变革。之后,Oracle将卷土重来。在这个过程,每个公司都愿意花费$25,000来占据一整页华尔街日报来吹嘘自己,是的,在90年代,人们以纸质的形式阅读报纸。
通过这些供应商的努力,数据库优化了物理设计,访问路径,I/O,数据读取,事务等等。这促进了许多硬件创新,例如:从微处理器指令系统到SMP系统设计,无线宽带技术等。数据库压缩每个时钟周期,每个IO,每个锁,记录的优势,每一个瓶颈都被强有力的改进。每个硬件供应商都尝试获得更高的TPC测评数。
RDBMS十分高效。
RDBMS有一种成本意识 —— 空间,时间,时空,甚至一切
与RDBMS存储格式相比,JSON效率低下。
所有的数据都是字符形式的JSON需要转换处理。
即使数值数据也存储在文本中。
每个值在每个文档中都带有其键名称(键值)。需要更多的存储和处理。
允许表示复杂的结构,导致运行时开销。
官方支持小集数据类型。无小数,无时间戳记等。
在数据库中使用JSON意味着:
数据库引擎必须理解每个文档的模式并处理它们,而不是处理常规元组和属性(行和列)。
必须解析和处理JSON中每个键值的数据类型
JSON可能是XML的一个精减的版本,但它仍然很庞大。
有这么多低效率的缺陷,为什么还有数据库使用JSON作为数据模型呢?或者说实现JSON数据类型呢?
的确。JSON作为数据交换格式被发明,现在是公共API——数据集成场景的首选格式。大多数设备,大多数软件层可以以JSON的形式消费和产品数据。以JSON存储和发布数据意味着,除了下面的优点之外,API和应用程序还可以在他们熟悉的介质中与数据库交互。你必须考虑n层应用程序效率,而不是将其与元组插入和更新进行比较。大多数RDBMS现在已经 将JSON添加为数据类型 。随着JSON使用量的增长,存储和处理效率将会提高。