Hadoop结合任何数据库的优势
Advantages of Hadoop in combination to any database
有这么多不同的数据库。
- 关系数据库
- nosql 数据库
- key/value
- 文档存储
- 宽列存储
- 图形数据库
和数据库技术
内存中
面向列
各有优缺点。
对我来说很难理解如何为大数据项目评估或选择合适的数据库。
我想到了 Hadoop,它有很多功能可以将数据保存在 hdfs 中或访问不同的数据库进行分析。
这么说对不对,hadoop可以让选择合适的数据库变得更容易,因为它最初可以用作数据存储?所以如果我有 hadoop hdfs 作为我的主要数据存储,我仍然可以在之后为我的应用程序更改我的数据库或使用多个数据库?
HDFS 不是 posix-compatible 文件系统,因此您不能仅将其用作通用存储,然后在其上部署任何数据库。您将部署的数据库应该明确支持 HDFS。有几个选项:HBase、Hive、Impala、SolR.
首先,Hadoop 不是数据库。它是一个分布式文件系统。
For me it is very difficult to understand how to evaluate or choose a suitable database for a big data project.
项目数据库的选择取决于这些因素,
数据存储和检索的性质
如果是用于事务,强烈建议您坚持使用 ACID 数据库。
如果要用于web-applications或随机访问,那么您有多种选择,从传统的SQL到支持HDFS作为存储层的最新数据库技术,像 HBase。传统的非常适合随机访问,因为它们高度支持约束和索引。
如果关注分析批处理,根据结构复杂性和体积,可以在所有可用的中进行选择。
数据格式或结构
大多数 SQL 数据库都支持结构化数据(可以格式化为表的数据),有些确实扩展了对存储 JSON 等的支持。
如果数据是非结构化的,尤其是平面文件,可以使用任何大数据支持技术(如 Hadoop、Spark、Storm)轻松存储和处理它们。同样,只有在交易量很大的情况下,这些技术才会出现。
不同的数据库技术适用于不同的数据格式。例如,图形数据库非常适合存储表示关系或图形的结构。
尺码
这是下一个更大的问题,数据越多,对可扩展性的需求就越大。所以选择支持Scale-Out架构的技术(Hadoop,NoSql)比Scale-In更好。当您计划存储更多内容时,这可能会成为未来的瓶颈。
I think about Hadoop, that has many functions to save data in hdfs or access different databases for analytics.
是的,您可以使用 HDFS 作为存储层,并使用任何支持 HDFS 的数据库进行处理(处理框架的选择是从批处理到近实时到实时选择的另一个问题)。需要注意的是,关系型数据库不支持 HDFS 存储。一些 NoSql 数据库,例如 MongoDB,也支持 HDFS 存储。
if i have hadoop hdfs as my main datastorage, i can still change my database for my application afterwards or use multiple databases?
这可能会很棘手,具体取决于您之后要与哪个数据库配对。
有这么多不同的数据库。
- 关系数据库
- nosql 数据库
- key/value
- 文档存储
- 宽列存储
- 图形数据库
和数据库技术
内存中
面向列
各有优缺点。 对我来说很难理解如何为大数据项目评估或选择合适的数据库。
我想到了 Hadoop,它有很多功能可以将数据保存在 hdfs 中或访问不同的数据库进行分析。
这么说对不对,hadoop可以让选择合适的数据库变得更容易,因为它最初可以用作数据存储?所以如果我有 hadoop hdfs 作为我的主要数据存储,我仍然可以在之后为我的应用程序更改我的数据库或使用多个数据库?
HDFS 不是 posix-compatible 文件系统,因此您不能仅将其用作通用存储,然后在其上部署任何数据库。您将部署的数据库应该明确支持 HDFS。有几个选项:HBase、Hive、Impala、SolR.
首先,Hadoop 不是数据库。它是一个分布式文件系统。
For me it is very difficult to understand how to evaluate or choose a suitable database for a big data project.
项目数据库的选择取决于这些因素,
数据存储和检索的性质
如果是用于事务,强烈建议您坚持使用 ACID 数据库。
如果要用于web-applications或随机访问,那么您有多种选择,从传统的SQL到支持HDFS作为存储层的最新数据库技术,像 HBase。传统的非常适合随机访问,因为它们高度支持约束和索引。
如果关注分析批处理,根据结构复杂性和体积,可以在所有可用的中进行选择。
数据格式或结构
大多数 SQL 数据库都支持结构化数据(可以格式化为表的数据),有些确实扩展了对存储 JSON 等的支持。
如果数据是非结构化的,尤其是平面文件,可以使用任何大数据支持技术(如 Hadoop、Spark、Storm)轻松存储和处理它们。同样,只有在交易量很大的情况下,这些技术才会出现。
不同的数据库技术适用于不同的数据格式。例如,图形数据库非常适合存储表示关系或图形的结构。
尺码
这是下一个更大的问题,数据越多,对可扩展性的需求就越大。所以选择支持Scale-Out架构的技术(Hadoop,NoSql)比Scale-In更好。当您计划存储更多内容时,这可能会成为未来的瓶颈。
I think about Hadoop, that has many functions to save data in hdfs or access different databases for analytics.
是的,您可以使用 HDFS 作为存储层,并使用任何支持 HDFS 的数据库进行处理(处理框架的选择是从批处理到近实时到实时选择的另一个问题)。需要注意的是,关系型数据库不支持 HDFS 存储。一些 NoSql 数据库,例如 MongoDB,也支持 HDFS 存储。
if i have hadoop hdfs as my main datastorage, i can still change my database for my application afterwards or use multiple databases?
这可能会很棘手,具体取决于您之后要与哪个数据库配对。