Storm简介
Storm是一个开源的分布式实时计算系统,可以简单、可靠的处理大量的数据流。
而且支持水平扩展,具有高容错性,保证每个消息都会得到处理。
Storm处理速度很快(在一个小集群中,每个结点每秒可以处理数以百万计的消息)。
Storm的部署和运维都很便捷,更为重要的是可以使用任意编程语言来开发应用。
目前国内一般采用阿里巴巴开源的JStorm版本;
You can build a simple rules engine yourself. All you need is to create a bunch of objects with conditions and actions, store them in a collection, and run through them to evaluate the conditions and execute the actions.
-Martin Fowler
JMS即Java消息服务(Java Message Service)应用程序接口是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。
Java消息服务是一个与具体平台无关的API,绝大多数MOM提供商都对JMS提供支持。
JMS (Java Message Service) is an API that provides the facility to create, send and read messages。
It provides loosely coupled(松耦合), reliable(可靠) and asynchronous(异步) communication。
Elasticsearch批量插入测试
数据:10万结构化document(json),每个1.3k;
测试结果:bulkProcess性能最优(4s),bulkRequest次之(1m);indexAPI适用于单条插入。
测试项目源码见me.demo.elasticsearch
Elasticsearch是一个基于Apache Lucene(TM)的开源搜索引擎。
Lucene非常复杂,你需要深入了解检索的相关知识来理解它是如何工作的。Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。
不过,Elasticsearch不仅仅是Lucene和全文搜索,我们还能这样去描述它:
在Elasticsearch中,文档归属于一种类型(type),而这些类型存在于索引(index)中,类比传统关系型数据库:
Relational DB -> Databases -> Tables -> Rows -> Columns
Elasticsearch -> Indices -> Types -> Documents -> Fields
Elasticsearch集群可以包含多个索引(indices)(数据库),每一个索引可以包含多个类型(types)(表),每一个类型包含多个文档(documents)(行),然后每个文档包含多个字段(Fields)(列)。
开源实时日志分析 ELK 平台由 ElasticSearch 、Logstash 和 Kiabana
三个开源工具组成。
官方网站
Docker…
neo4j包含schema indexes 和 legacy indexes两种类型,两者理念不同且不可互换或兼容,实际应用中应明确检索需求后采用合适的索引。
Neo4j图数据库的索引采用的是Lucene全文索引,特别是LegacyIndex部分,需要深入了解Lucene进行索引定制,之前以IK分词在Solr中建索引和检索浅尝辄止,对Lucene也是停留在概念层。
Solr对Lucene商业封装后的易用性很强,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面。Solr的封装屏蔽了许多技术细节,但是对于开发人员来说,最好还是自下而上循序渐进比较好。
lucene(全文检索引擎工具包)>solr(企业级搜索应用服务器)>nutch(分布式检索引擎)和打Boss一样,得一个个来。
数据库检索效率时,一般首要优化途径是从索引入手,然后根据需求再考虑更复杂的负载均衡、读写分离和分布式水平/垂直分库/表等手段;
索引通过信息冗余来提高检索效率,其以空间换时间并会降低数据写入的效率;因此对索引字段的选择非常重要。
本文以常用的IK Analyzer分词器为例,介绍如何在Neo4j中对字段新建全文索引实现模糊查询。
Neo4j采用Neo4j Spatial插件实现空间索引,Neo4j Spatial可使用API或Cypher执行空间查询操作,另作为插件可部署于GeoServer与uDig;与Oracle/MySQL Spatial Extention/MongoDB 2dSphere等空间模块相比,这种结合关系与空间的分析更值得尝试!
团队一直有小伙伴顶着数据库相关的工作,ETL数据整合分析事情多了,研发开发工作相应减少,终于有机会也来写写存储过程了。
以SP进行SQL业务逻辑封装,执行性能能大大提高,在注意合理拆分SP、SQL书写简洁规范和注释到位的情况下,也能做到易于维护。
特别是对于海量数据分析追求时效性的业务,效率第一,就算逻辑复杂不易维护也得认。如Hibernate VS Mybatis,产品 VS 项目,现实世界丰富多彩,存在即合理。