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语言的特点和技术优势,可以构建出功能强大且易于扩展的网格计算系统。未来的研究可以进一步探索如何优化网格计算框架...
本文将详细介绍几种不同的方法来计算两个日期之间的差值,并提供相应的代码示例。 #### 1. 使用 `SimpleDateFormat` 和基本计算 这种方法涉及将日期格式化为字符串,然后解析回日期对象,最后通过计算毫秒值来得出...
在Java中,对象的大小通常可以通过以下几种方式来计算: 1. **使用Java API**:Java 9及以上版本引入了一个名为`sun.misc.Unsafe`的API,虽然它不是公开的,但可以通过反射访问。`Unsafe`类提供了一个`...
综上所述,基于Web的Java并行计算为解决大规模并行问题提供了一种创新的方法。通过利用Java的特性,不仅可以提高计算效率,还能有效地利用互联网上的闲置计算资源。未来,随着技术的不断进步,我们有理由相信这种...
Java作为一种广泛使用的编程语言,同样可以实现XIRR的计算功能。本工程提供的就是一个Java实现XIRR的例子,它包含了测试类,可以直接运行并验证结果的准确性。 XIRR的计算基于现金流的时间价值理论,它考虑了资金的...
为了解决这个问题,我们可以采用以下几种策略: 1. **分批导出**: - 考虑将大数据集分成若干小批次,每次只处理和导出一部分数据。例如,可以按行或按特定数量的数据进行划分。 - 使用`java.util.Iterator`遍历...
Java编程的计算机是一种使用Java语言开发的软件应用,它提供了用户界面(UI)来执行基本或复杂的计算操作。这个小型计算机项目通常会涵盖以下几个关键知识点: 1. **Java基础**:Java是面向对象的编程语言,由Sun ...
10. 动态规划和递归:这两种方法常用于解决复杂问题,如最短路径、背包问题等。理解和掌握它们能帮助我们编写高效的代码。 11. 并查集和堆:并查集用于处理合并和查询不相交集合的问题,堆(如优先队列)则在排序和...
本文将详细探讨C回调Java的几种方法。 1. **注册本地方法** 在JNI中,Java虚拟机(JVM)启动时会加载一个`JNI_OnLoad`函数,这是C代码与Java世界接触的第一个入口。在这个函数中,我们可以使用`RegisterNatives`...
本程序采用了一种基本的方法,即根据两个日期之间的天数差以及已知的一个星期中的某一天(例如星期一)来计算另一个日期是星期几。 ### 2. 日期计算中的闰年判断 闰年的判断是日期计算中非常重要的一步,因为闰年...
Java编程语言在处理大型数据集时,经常需要借助外部库来执行特定的数学计算,比如矩阵操作、特征值计算等。Matlab是一款强大的数学软件,它提供了丰富的数值计算功能,但其原生环境并不适合处理实时或大规模的服务器...
本篇文章将详细讲解在Oracle数据库环境下,Java实现分页的三种方法。 一、JDBC手动分页 1. **设置SQL语句**: 使用`LIMIT`和`OFFSET`在Oracle中实现分页,但由于Oracle不直接支持这两个关键字,我们可以使用`ROWNUM...
总的来说,Java处理五百万数据的排序需要结合高效的算法和合理的内存管理,通过外部排序和并行计算等技术,能够在不消耗大量内存的情况下实现高效排序。当然,具体实现还需要根据实际情况进行优化,包括硬件资源、...
"JAVA语言开发的水蒸气计算包.rar"是一个专为火电厂热力设备性能计算设计的软件工具,它利用Java的强大功能和跨平台特性,为用户提供了一种高效、准确的水蒸汽热力性能计算解决方案。 水蒸汽计算在火电厂中至关重要...
例如,它可以创建几个`Course`对象,然后调用`calculateGPA`方法来测试GPA的计算是否正确。`Java.jpg`可能是与课程相关的图片,例如一个关于Java编程的示例代码截图。 总结来说,通过Java的构造方法重载,我们可以...
Java 实现的数据采集系统是一种基于 Java 语言开发的软件应用,用于从各种数据源收集、处理和存储数据。数据采集是大数据分析、机器学习和业务智能等领域的基础步骤,能够帮助我们从海量信息中提取有价值的数据。在...
以下将详细阐述几种将Java编译为EXE的方法。 1. **JAR to EXE转换器** JAR(Java Archive)文件是Java类库的集合,可以包含源代码、资源文件和元数据。一些工具如Excelsior JET、Launch4j和Jar2Exe可以帮助我们将...
总的来说,Java处理数学表达式的方式多样,`jeval`库提供了一种便捷的解决方案,适用于大部分简单的到中等复杂的计算需求。对于更复杂或定制化的需求,可以考虑使用自定义解析器或Java的`ScriptEngine`。理解并熟练...