有几种类型的数据库用于不同的目的,但通常MySQL用于一切,因为是最知名的数据库。仅举一个例子,在我的公司中,大数据的应用程序在初始阶段有一个MySQL数据库,这是令人难以置信的,并将给公司带来严重后果。为何选择MySQL?仅仅因为没有人知道应该如何(以及何时)使用另一个DBMS。
所以,我的问题不是供应商,而是数据库的类型。您是否可以为每种类型的数据库提供特定情况(或应用程序)的实际示例,强烈建议您使用它?
示例:
•由于Y,社交网络应使用X类型。
•MongoDB或沙发数据库不支持交易,因此文档数据库对银行或拍卖网站的应用程序不利。
等等......
关系: MySQL,PostgreSQL,SQLite,Firebird,MariaDB,Oracle DB,{{ 3}},SQL server,IBM DB2,IBM Informix
对象: Teradata,ZODB,DB4O,Eloquera,Versant,Objectivity DB
图表数据库: VelocityDB,AllegroGraph,Neo4j,OrientDB,InfiniteGraph,graphbase,{ {3}},sparkledb
主要价值商店: flockdb,BrightstarDB,Amazon DynamoDB,Redis,Riak,Voldemort ,FoundationDB,leveldb,BangDB,KAI,hamsterdb,Tarantool,Maxtable,HyperDex
列系列: Genomu,Memcachedb,Big table,Hbase,hyper table
RDF商店: Cassandra,Apache Accumulo
多模型数据库: Apache Jena,Sesame,arangodb,Datomic,Orient DB
文档: FatDB,AlchemyDB,Mongo DB,Couch DB,Rethink DB,Raven DB,{{ 3}},terrastore,Jas DB,Raptor DB,djon DB
答案 0 :(得分:5)
由于普遍性,这个问题几乎无法回答。我认为你正在寻找一些简单的答案问题=解决方案。问题是每个“问题”在成为一个企业时变得越来越独特。
你称之为社交网络?推特? Facebook的? LinkedIn?堆栈溢出?它们都针对不同的部分使用不同的解决方案,并且可以存在使用多语言方法的许多解决方案。 Twitter有一个像概念的图形,但只有1度的连接,关注者和追随者。另一方面,LinkedIn在展示人们如何超越一级学位方面茁壮成长。这是两种不同的处理和数据需求,但两者都是“社交网络”。
如果你有一个“社交网络”但没有做任何发现机制,那么你很可能很容易使用任何基本的键值存储。如果您需要高性能,水平缩放,并且具有二级索引或全文搜索,则可以使用Couchbase。
如果您在收集的日志数据之上进行机器学习,则可以将Hadoop与Hive或Pig或Spark / Shark集成。或者你可以做一个lambda架构,并使用许多不同的系统与Storm。
如果您通过超出二度顶点的查询等图形进行发现,并且还对边缘属性进行过滤,则可能会考虑在主要商店顶部使用图形数据库。但是,图形数据库不是会话存储或通用存储的好选择,因此您需要多语言解决方案才能有效。
数据速度是多少?规模?你想怎么管理它。您在公司或创业公司拥有哪些专业知识。这有很多原因,这不是一个简单的问答。
答案 1 :(得分:1)
特定于数据库选择的简短有用读物:How to choose a NoSQL Database?。我将在此答案中突出重点。
键值存储
如果您定义了清晰的数据结构,以使所有数据都只有一个键,请进行键值存储。就像您有一个很大的Hashtable,人们通常将其用于Cache存储或明显基于密钥的数据。但是,当您需要基于多个键查询相同的数据时,事情就会变得有些烦人了!
一些键值存储为:memcached,Redis,Aerospike。
围绕键值存储设计数据模型的两个重要事项是:
面向文档
如果您只是远离RDBMS,并且希望以对象方式并尽可能接近表式结构来保存数据,那么文档结构是您的最佳选择!当您创建应用程序并且不想过早地处理RDBMS表设计(在原型设计阶段)并且架构可能随着时间而发生巨大变化时,该功能特别有用。但是请注意:
面向文档的流行数据库是:MongoDB,Couchbase。
内存缓存
Redis
Aerospike
MongoDB
Couchbase服务器