java - 直接在数据库上处理大量数据是个好主意吗?

标签 java database postgresql plpgsql

我有一个存储了很多网页的数据库。

我将需要处理我拥有的所有数据,因此我有两个选择:将数据恢复到程序或使用我将创建的一些函数直接在数据库中处理。

我想知道的是:

  • 在数据库中做一些处理,而不是在应用程序中做一些处理是好的 想法?
  • 什么时候推荐,什么时候不推荐?
  • 有优缺点吗?
  • 是否可以将语言扩展到新功能(外部 API/库)?

我尝试将内容检索到应用程序(有效),但速度很慢而且很脏。我的 我的当务之急是在数据库中不能做我在 Java 中能做的事情,但我不知道这是不是真的。

仅举个例子:我有一个名为Token 的表。目前,它有 180,000 行,但这将增加到超过 1000 万行。我需要进行一些处理,以了解分类为“专有名称”的两个标记之间的单词是否是名称的一部分。

我需要处理所有数据。在这种情况下,直接在数据库上做比检索到应用程序更好?

最佳答案

My preoccupation was that can't do in the database what can I do in Java, but I don't know if this is true.

不,这不是一个正确的假设。存在使用数据库处理数据的有效情况。例如,如果它涉及调用许多可以组合在存储过程中的不同 SQL,那么您应该在存储过程中进行处理并从您的 Java 应用程序调用存储过程。这样您就可以避免进行多次网络访问以访问数据库服务器。

虽然我不知道你在处理什么。您正在解析存储在数据库中的 XML 数据吗?那么也许您应该使用 XQuery,许多现代数据库都支持它。

ONLY an example: I have a table called Token. At the moment, it has 180,000 rows, but this will increase to over 10 million rows. I need to do some processing to know if a word between two token classified as `Proper Name´ is part of name or not.

数据中是否有一些指标表明它是一个专有名称?获取 1000 万行(极易受 OutOfMemoryException 影响)然后遍历它们并不是一个好主意。如果有关于数据的某些参数可以放在 SQL 的 where 子句中以限制正在获取的数据数量,我认为这是一种方法。当然,您需要对 SQL 进行解释,检查正确的索引是否到位,检查索引集群比率,索引类型,所有这些都会产生影响。现在,如果您不能完全消除所有“不正确的名称”,那么您应该尝试使用 SQL 消除尽可能多的名称,然后在您的应用程序中处理其余部分。我假设这是一个批处理应用程序,对吧?如果它是一个 Web 应用程序,那么您肯定希望创建一个批处理应用程序来在 Web 应用程序查询数据之前为您暂存数据。

我希望我的解释是有道理的。如果您有任何问题,请告诉我。

关于java - 直接在数据库上处理大量数据是个好主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7237170/

相关文章:

sql - 删除列名中带引号的列

mysql - rails : mysql & postgres at the same time in the same app?

sql - 选择左连接表的使用和条件

java - 如何更改 Android DatePickerDialog 中的字体

java - 如何减少数据库表行整数值

javascript - 从数据库中获取数据并将其发送到 javascript 函数

php - Mysql中的数据过滤

php - laravel 无法打开输入文件 : artisan (5. 3)

java - 如何避免有关原始类型的代码重复?

java - 需要扩展类的枚举