非关系型数据库有哪些

嘿,让我告诉你一件事。
两年前,我在深圳做一个项目,接触到了几个非关系型数据库。
真不是我能随便用的。

我们来谈谈 MongoDB。
当时,我们的团队正在致力于为电子商务平台存储用户数据。
数据量不大,但结构却相当复杂。
有关用户、订单等的信息经常被修改。
使用MongoDB很有用,它使用JSON格式的文档来存储数据,非常灵活。
想想看,如果给用户信息添加一个新的字段,不需要改变表结构,直接添加就可以了,会省去多少麻烦。
此外,它还具有很强的可扩展性。
后来随着用户数量的增加,增加几台服务器就足以支持了。
这是我的亲身经历,味道真好。

还有Cassandra,我们旁边那群人用的。
他们建立了一个日志分析系统。
数据量确实很大,上亿条,而且要实时查询。
就用Cassandra吧,它是Facebook开发的,特别适合分布式存储和处理大量数据。
他们告诉我,使用Cassandra,查询速度非常快,而且非常稳定。
这也是真实场景,实在不敢夸。

我也用过Redis。
就在去年冬天,我们举办了一次闪购活动,用户数量猛增。
几个后端服务已经濒临崩溃,但Redis却稳定如狗。
是key-value存储,读写速度太快。
我们用它作为缓存来存储产品库存等。
用户登录时,首先在Redis中查找,找到后直接返回,无需检查数据库。
速度惊人。
这也是事实,并且多次拯救了我们。

至于HBase,我遇到过一次,它是基于BigTable的。
我们有一个朋友在百度工作。
他们用大量数据建立搜索引擎索引,然后使用HBase。
他表示,分布式功能非常强大,处理大规模数据集非常方便。
但我自己从未使用过它,所以我不会离题。

我从未接触过 Neo4 j,只听说过它用于图形数据库。
有一次我和一个朋友吃饭,他告诉我他们公司使用 Neo4 j 来开发社交关系图并分析用户关系。
这很有趣。
但我从来没有接触过,所以不敢乱说。

我见过其他的,比如 Couchbase、Memcached 和 CouchDB,但我用得不多。
各有各的特点,关键看你使用的场景。
比如Couchbase适合交互式Web应用,Memcached适合缓存,CouchDB也适合灵活的数据模型。
您可以根据自己的实际需要进行选择。

总之,这些数据库各有各的优点。
如果您选择正确的,它可以为您提供很大帮助。
如果您选择错误,您可能会遇到麻烦。
我建议你多了解一下,然后根据你项目的需要来决定使用哪一种。

非关系型数据库都有哪些

MongoDB 是一个文档数据库。
将数据保存为 JSON 格式。
支持结构的动态修改。

Cassandra 是一个分布式数据库。
由 Facebook 开发。
使用 CQL 进行查询。
适合大数据。

Redis 是一个内存数据库。
快速地。
支持各种数据类型。
但数据在内存中。

HBase是一个基于列的数据库。
适合写入大量数据。
数据读取速度快。
不支持交易。

Neo4 j 是一个图形数据库。
存储节点和关系。
使用 Cypher 进行查询。
非常适合链接数据。

使用哪一种取决于具体情况。
Redis用于高性能要求。
使用 Cassandra 处理大数据。

非关系型数据库有哪些

说实话,刚接触NoSQL的时候,我是被Redis那家伙搞糊涂的。
要知道,那种感觉像是直接跳转到内存的键值存储类型,非常适合缓存。
我之前做过一个电子商务项目。
用户每次访问每个商品页面时,该商品的信息、价格、库存都会立即显示在 Redis 中。
访问的速度生硬,比查数据库的时候还要快。
但需要注意的是,此类数据库一旦挂掉,数据库中存有数据就得更换,所以适合对数据实时性要求不高的场景,但不宜断线。

我使用 MongoDB 作为文档数据库。
那时她很满足于成为一个真正的触发者。
文章、用户和评论的结构非常混乱,MongoDB 根本不适合。
您可以将用户信息、过去的帖子以及收集的文章报告到一个文档中,方便查询。
但说实话,如果我使用 SQL 等复杂查询,有时我会对 MongoDB 查询文件摸不着头脑。
语法看起来有点像 JSON 乱写。
我记得有一次,当我检查用户首选项时,我输入了错误的字段名称。
我花了很长时间才意识到那是什么。

我对列族数据库没有太多经验,但我知道 HBase 是做什么的。
我的朋友在一家大数据公司工作,他们使用HBase来收集用户行为日志。
数据量实在是太可怕了。
他们声称每天能够吐出几TB的数据,而HBase可以在几分钟内处理完毕。
他们告诉我,这种类型的数据库是为了分发而设计的。
家庭信息分为几列。
通过查询,准确定位到该列,效率高得离谱。
但如果按家族列搜索数据,性能可能会有点慢。

我对图数据库有点兴趣。
我看了Neo4 之前的demo,视觉搜索就像一个破飞机的游戏。
在进行社交推荐时,用户A关注用户B,用户B依次关注用户C。
如果你想找到应该关注用户A的用户C,使用Neo4 j来检查称为左手。
但如果你想看看产品A的用户购买了什么,这类信息与报告没有直接关系,数据库图表也无能为力。

最终选择数据库还是要看场景。
对于缓存,选择 Redis;对于处理消息数据,选择 MongoDB;对于大规模分析,选择 HBase;对于网络连接,选择 Neo4 j。
这没有绝对的好或坏,关键要看你用哪个键。
你知道我说什么吗?