在这篇文章Stack Overflow Architecture我读到了一些名为nosql的东西,我不明白这意味着什么,我试图搜索谷歌但接缝我不能得到它究竟是什么.
任何人都可以用简单的词解释nosql的含义吗?
如果您曾经使用过数据库,那么您可能已经使用了关系数据库.示例可以是Access数据库,SQL Server或MySQL.当您考虑这些类型的数据库中的表时,通常会想到一个网格,就像在Excel中一样.您必须为数据库表的每一列命名,并且必须指定该列中的所有值是否为整数,字符串等.最后,当您要在该表中查找信息时,必须使用一种名为SQL.
围绕非关系型数据库形成了一种新的趋势,即不属于整齐网格的数据库.您不必指定哪些内容是整数,字符串和布尔值等.这些类型的数据库更灵活,但它们不使用SQL,因为它们不是这样构造的.
简而言之,这就是为什么它们是"NoSQL"数据库.
使用NoSQL数据库的优势在于,您无需提前确切了解数据的样子.也许您有一个联系人表,但您不知道您希望存储哪些关于每个联系人的信息.在关系数据库中,您需要创建"名称"和"地址"之类的列.如果您稍后发现需要电话号码,则必须为此添加一列.在NoSQL数据库中不需要这种规划/结构.还有潜在的扩展优势,但这有点争议,所以我不会在那里提出任何要求.
NoSQL数据库的缺点实际上是缺少SQL.SQL很简单,无处不在.SQL允许您更容易地对数据进行切片和切块以获得聚合结果,而在NoSQL数据库中则更复杂(您可能会使用MapReduce之类的东西,因为它有一些学习曲线).
来自NoSQL主页
NoSQL是一种快速,可移植的关系数据库管理系统,没有任何限制(除了内存和处理器速度),它在UNIX 1操作系统下运行并与之交互.它使用1991年3月的"Unix Review"中描述的"Operator-Stream Paradigm",第24页,标题为"A 4GL Language".有许多"运营商"各自对数据执行独特的功能."流"由UNIX输入/输出重定向机制提供.因此,每个运算符处理一些数据,然后通过UNIX管道函数将其传递给下一个运算符.这非常有效,因为UNIX管道在内存中实现.NoSQL符合"关系模型".
我也会在Stackoverflow上看到这个答案.