让我们考虑以下问题。我们有一个包含大量数据(即大数据)的系统。实际上,我们有一个数据库。首先,我们希望能够快速地向数据库写入和读取数据。我们还希望有一个数据库的网络接口,以便不同的客户端可以远程写入和读取数据库。
但我们想要的系统不仅仅是一个数据库。首先,我们希望能够在数据上运行不同的数据分析算法,以发现规律、相关性、异常等(我们非常关心性能)。其次,我们希望将机器学习机制与数据库绑定。这意味着我们希望在数据上运行机器学习算法,以便学习数据中存在的“关系”,并基于此预测数据库中尚未存在的条目的值。
最后,我们希望有一个基于点击的友好界面来可视化数据。用户可以以图形、图表和其他交互式可视化对象的形式查看数据。
对于上述描述的问题,标准且广泛认可的解决方法有哪些?处理这些问题需要使用哪些编程语言?
回答:
我将这样回答你的问题:我假设你已经对大数据数据库的使用有坚定的兴趣,并且有实际需求,所以我不会重复教科书上的大量信息,而是会突出一些满足你五个要求的数据库——主要是Cassandra和Hadoop。
1) 我们希望能够快速地向数据库写入和读取数据。
你需要探索NoSQL数据库,这些数据库通常用于存储“非结构化”的大数据。一些开源数据库包括Hadoop和Cassandra。关于Cassandra,
Facebook需要一个快速且廉价的解决方案来处理数十亿的状态更新,因此启动了这个项目,并最终将其移至Apache,在那里它得到了许多社区的大力支持(参考)。
参考资料:
2) 我们还希望有一个数据库的网络接口
查看150个NoSQL数据库的列表,以了解所有可用的各种接口,包括网络接口。
Cassandra有一个集群管理、一个基于网络的环境、一个基于AngularJS的网络管理,甚至还有GUI客户端。
参考资料:
3) 我们希望能够在数据上运行不同的数据分析算法
Cassandra、Hive和Hadoop非常适合数据分析。例如,eBay使用Cassandra来管理时间序列数据。
参考资料: