`
datamachine
  • 浏览: 163485 次
社区版块
存档分类
最新评论

java数据计算层的几种解决方法2

阅读更多
2、SQL
    SQL/SP/JDBC在这里属于一类,这是老牌的数据计算层,性能和灵活性是它的优势。但随着新情况的不断出现,单纯用SQL已经难以满足需求,比如: JAVA开发规模的扩大,数据量的剧增,复杂计算问题的涌现。虽然SQL得高分的指标不多,但都是权重最高的。

    成熟度:5星。最成熟的。
    低耦合性:0星。耦合性极高。除了在实验室之外,几乎不可能写出与数据库无关,与代码无关的计算脚本。

    脚本编写:3星。SQL实际很难写出也很难维护,需要大量的时间去学习,好在SQL非常成熟,资料丰富论坛很多。但各种数据之间的不兼容也是个巨大的障碍,这是Hibernate之所以流行的主因。
    集成:5星。JAVA程序员的第一课就是用JDBC连接数据库。
    界面友好性:5星。有大量的SQL开发工具,成熟度都很高,我自己用过不下10种。
    性能:5星。数据库直接支持的语言,性能最高。
    复杂计算:3星。SQL适合普通的计算问题,可以解决复杂问题但非常困难(而Hibernate是完全不能)。SP的出现并不能有太大的改善。代码难以拆分,复杂目标难以分解为简单步骤是主因。
    大数据支持:1星。个别数据库厂商表示已经支持大数据了,但这让SQL语句的不兼容程度加剧了,而且我也没见过成功案例。
    非数据库计算:1星。不直接支持。采用ETL/数据仓库可以达到这个目的,但代价巨大。
    跨库计算:1星。个别数据库支持,但性能较差,也可以采用DBLink和link server等中间件勉强支持,但离“自由方便”的程度还差得远。
    调式方便性:1星。很难调试,难以观察中间结果,只能全部执行完才能看到最终计算结果。唯一的办法是“以调试为目标进行编程”,即刻意建造大量临时表。

3、集算器
    最近在研究的就是这个,号称擅长复杂、跨库的计算,跟Cloudera在2012年发布了impala 1.0 beta版(开源)类似。和其他数据计算层不同,集算器只是将SQL作为一种数据源,而取到数据后的计算则完全和SQL无关。PJA/hibernate则被迫开放SQL接口,用来实现自己处理不了的计算。

    成熟度:1星。在市场出现仅1年,应用的广度和深度都不如其他数据计算层。
    低耦合性:4星。脚本独立于数据库和Java代码,算法和具体数据库无关,耦合性低,可以轻松移植到不同的数据库。因为输出接口为JDBC,所以也可以移植到报表,这是其他数据计算层所不具备的特征。
    脚本编写:4星。脚本写在网格中,单元格可以按格名调用,可以直接观察每一步的计算结果,复杂目标可以分解为简单步骤。但它的语法偏向对象引用(但不是对象),与偏向描述语句的SQL风格不同,需要学习。JAVA程序员到底喜欢哪一种,还很难说。
    集成:5星。集算器是纯JAVA架构,输出JDBC接口,没有学习成本,用过任何一种数据库的程序员都可以无障碍使用。
    界面友好性:4星。独立的图形化编辑器,使用方便直观,但帮助系统不够友好。
    性能:2星。全内存计算,数据量不能太大。
    复杂计算:5星。这是集算器出现的原因。
    非数据库计算:3星。支持Excel/Txt,但不支持xml或webService。
    大数据支持:4星。能访问HDFS,同步宣称支持并行计算,但细节还不太了解。
    跨库计算:5星。集算器语法与具体数据库无关,天生支持跨库计算。
    调式方便性:5星。调式功能完善,而且使用非常方便,可以观察到最细粒度的计算步骤。

    现在在做性能测试,看表现如何。
分享到:
评论

相关推荐

    java几种分页方法

    java几种分页方法java几种分页方法java几种分页方法 java几种分页方法java几种分页方法java几种分页方法 java几种分页方法java几种分页方法java几种分页方法 java几种分页方法java几种分页方法java几种分页方法

    java一次性查询处理几百万数据解决方法

    ### Java一次性查询处理几百万数据解决方法 在Java开发中,处理大数据量是常见的需求之一,特别是当数据规模达到几百万级别时,如何高效、稳定地处理这些数据变得尤为重要。本文将详细介绍一种Java一次性查询处理几...

    基于Java的网格计算框架及其实现

    基于Java的网格计算框架为解决大规模计算问题提供了一种高效、可靠的解决方案。通过充分利用Java语言的特点和技术优势,可以构建出功能强大且易于扩展的网格计算系统。未来的研究可以进一步探索如何优化网格计算框架...

    java 计算时间差

    本文将详细介绍几种不同的方法来计算两个日期之间的差值,并提供相应的代码示例。 #### 1. 使用 `SimpleDateFormat` 和基本计算 这种方法涉及将日期格式化为字符串,然后解析回日期对象,最后通过计算毫秒值来得出...

    计算java对象大小

    在Java中,对象的大小通常可以通过以下几种方式来计算: 1. **使用Java API**:Java 9及以上版本引入了一个名为`sun.misc.Unsafe`的API,虽然它不是公开的,但可以通过反射访问。`Unsafe`类提供了一个`...

    基于Web的Java并行计算

    综上所述,基于Web的Java并行计算为解决大规模并行问题提供了一种创新的方法。通过利用Java的特性,不仅可以提高计算效率,还能有效地利用互联网上的闲置计算资源。未来,随着技术的不断进步,我们有理由相信这种...

    Java计算财务收益率XIRR

    Java作为一种广泛使用的编程语言,同样可以实现XIRR的计算功能。本工程提供的就是一个Java实现XIRR的例子,它包含了测试类,可以直接运行并验证结果的准确性。 XIRR的计算基于现金流的时间价值理论,它考虑了资金的...

    java解决大批量数据导出Excel产生内存溢出的方案

    为了解决这个问题,我们可以采用以下几种策略: 1. **分批导出**: - 考虑将大数据集分成若干小批次,每次只处理和导出一部分数据。例如,可以按行或按特定数量的数据进行划分。 - 使用`java.util.Iterator`遍历...

    java编程的计算机

    Java编程的计算机是一种使用Java语言开发的软件应用,它提供了用户界面(UI)来执行基本或复杂的计算操作。这个小型计算机项目通常会涵盖以下几个关键知识点: 1. **Java基础**:Java是面向对象的编程语言,由Sun ...

    Java数据结构题

    10. 动态规划和递归:这两种方法常用于解决复杂问题,如最短路径、背包问题等。理解和掌握它们能帮助我们编写高效的代码。 11. 并查集和堆:并查集用于处理合并和查询不相交集合的问题,堆(如优先队列)则在排序和...

    C回调java几种方法

    本文将详细探讨C回调Java的几种方法。 1. **注册本地方法** 在JNI中,Java虚拟机(JVM)启动时会加载一个`JNI_OnLoad`函数,这是C代码与Java世界接触的第一个入口。在这个函数中,我们可以使用`RegisterNatives`...

    java星期几的计算程序

    本程序采用了一种基本的方法,即根据两个日期之间的天数差以及已知的一个星期中的某一天(例如星期一)来计算另一个日期是星期几。 ### 2. 日期计算中的闰年判断 闰年的判断是日期计算中非常重要的一步,因为闰年...

    java利用matlib导出的jar包计算特征值

    Java编程语言在处理大型数据集时,经常需要借助外部库来执行特定的数学计算,比如矩阵操作、特征值计算等。Matlab是一款强大的数学软件,它提供了丰富的数值计算功能,但其原生环境并不适合处理实时或大规模的服务器...

    java分页 的3种方法

    本篇文章将详细讲解在Oracle数据库环境下,Java实现分页的三种方法。 一、JDBC手动分页 1. **设置SQL语句**: 使用`LIMIT`和`OFFSET`在Oracle中实现分页,但由于Oracle不直接支持这两个关键字,我们可以使用`ROWNUM...

    Java方法排序五百万数据

    总的来说,Java处理五百万数据的排序需要结合高效的算法和合理的内存管理,通过外部排序和并行计算等技术,能够在不消耗大量内存的情况下实现高效排序。当然,具体实现还需要根据实际情况进行优化,包括硬件资源、...

    JAVA语言开发的水蒸气计算包.rar

    "JAVA语言开发的水蒸气计算包.rar"是一个专为火电厂热力设备性能计算设计的软件工具,它利用Java的强大功能和跨平台特性,为用户提供了一种高效、准确的水蒸汽热力性能计算解决方案。 水蒸汽计算在火电厂中至关重要...

    java 使用构造方法的重载计算课程的GPA值

    例如,它可以创建几个`Course`对象,然后调用`calculateGPA`方法来测试GPA的计算是否正确。`Java.jpg`可能是与课程相关的图片,例如一个关于Java编程的示例代码截图。 总结来说,通过Java的构造方法重载,我们可以...

    java实现的数据采集系统.zip

    Java 实现的数据采集系统是一种基于 Java 语言开发的软件应用,用于从各种数据源收集、处理和存储数据。数据采集是大数据分析、机器学习和业务智能等领域的基础步骤,能够帮助我们从海量信息中提取有价值的数据。在...

    将JAVA编译为EXE的几种方法

    以下将详细阐述几种将Java编译为EXE的方法。 1. **JAR to EXE转换器** JAR(Java Archive)文件是Java类库的集合,可以包含源代码、资源文件和元数据。一些工具如Excelsior JET、Launch4j和Jar2Exe可以帮助我们将...

    java 计算数学表达式

    总的来说,Java处理数学表达式的方式多样,`jeval`库提供了一种便捷的解决方案,适用于大部分简单的到中等复杂的计算需求。对于更复杂或定制化的需求,可以考虑使用自定义解析器或Java的`ScriptEngine`。理解并熟练...

Global site tag (gtag.js) - Google Analytics