“谈谈你对Nosql的理解”
如果你遇到这个问题的时候,找不到回答的思路
脑子里面一片混乱,然后回答的时候吞吞吐吐。
建议你看完整篇文章。
大家好,我是Mic,一个工作了14年的Java程序员
关于这个问题,面试官想考察什么呢?
很显然,这是一道没有标准答案的面试题。
所以面试官问这个问题,无非就是考察你的技术积累和总结能力。
因为只有对一个技术的理解足够深,才能够很好的表达出来。
就像我们总结自己逝去的青春,虽然没有华丽的辞藻但是那些喜怒哀乐,我们总是能够表达得那么深刻。
Nosql在现在并不是一个新词。
最早出现在1998年,那个时候对于Nosql的描述是一个轻量、开源不提供SQL功能的关系数据库。
到了2009年,重新对Nosql做了定义,这时的Nosql主要指非关系型、分布式、不提供ACID的数据库设计模式。
注意,它不是一个技术,而是一种设计理念。
随着MongoDB、Redis这一类的技术被逐步广泛,大家对于Nosql的理解才越来越透彻。
本质上来说,Nosql其实是为了弥补关系数据库在某些特定场景下性能较差的短板。
在高并发流量下网站性能的提升扮演了非常重要的角色。
针对不同的业务数据类型,Nosql也有不同的实现方式。
比如针对K-V存储的Redis,针对文档存储的MongoDB、针对列式存储的ClickHouse、针对图形存储的Neo4j,以及以时间为纬度的时序数据存储InfluxDB等。
因此,Nosql既可以理解成Non-SQL,也可以理解成Not only SQL。
NoSQL可以理解成Not Only SQL
它其实是相对于传统的关系型数据库而言的一种非关系型数据存储的统称。
在分布式高并发的架构下,传统的关系数据库存在短板,比如性能、扩展性、大数据量的存储。
同时随着网站流量的增长,这些短板严重影响了网站性能造成业务的影响。
而NoSQL强调的是非关系型、分布式、可扩展性、性能等特征的设计模式。
从语义上来看,它可以不需要通过标准化的SQL语句来获取数据。
意味着不需要固定的二维表格模式以及元数据的存储,可以有效的避免SQL以及表关联查询的操作。
从而更好的实现水平扩展的特性。
同时,针对不同类型的数据,可以灵活的使用更加高效的存储形态,是的性能跟进一步得到提升。
以上就是我的理解。
如果你喜欢我的作品,记得点赞收藏加关注
另外,我将所有Java面试系列制作成了完整的面试文档。它的便捷之处在于,可以通过检索的方式,找到你想要的面试题,目前已经更新180期,总计超过15W字!