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

Java 直接在数据库上处理大量数据是个好主意吗?,java,database,postgresql,plpgsql,Java,Database,Postgresql,Plpgsql,我有一个数据库,存储了很多网页 我需要处理我所有的数据,所以我有两个选择:将数据恢复到程序或直接在数据库中使用我将创建的一些函数处理 我想知道的是: 在数据库中做一些处理,而不在应用程序中是一个很好的选择 想法 何时推荐,何时不推荐 有利弊吗 是否可以将语言扩展到新功能(外部API/库) 我尝试将内容检索到应用程序(工作正常),但速度很慢,而且很脏。我的 我的当务之急是在数据库中做不到我在Java中可以做什么,但我不知道这是不是真的 仅举一个例子:我有一个名为Token的表。目前,它有180

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

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

我想知道的是:

  • 在数据库中做一些处理,而不在应用程序中是一个很好的选择 想法
  • 何时推荐,何时不推荐
  • 有利弊吗
  • 是否可以将语言扩展到新功能(外部API/库)
我尝试将内容检索到应用程序(工作正常),但速度很慢,而且很脏。我的 我的当务之急是在数据库中做不到我在Java中可以做什么,但我不知道这是不是真的

仅举一个例子:我有一个名为
Token
的表。目前,它有180000行,但这将增加到1000多万行。我需要做一些处理来知道两个标记之间被归类为“专有名称”的单词是否是名称的一部分

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

我的当务之急是不能在数据库中做我能在数据库中做什么 Java,但我不知道这是不是真的

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

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

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

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

我希望我的解释有道理。如果你有问题,请告诉我

我的当务之急是不能在数据库中做我能在数据库中做什么 Java,但我不知道这是不是真的

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

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

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

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


我希望我的解释有道理。如果你有问题,请告诉我

针对每一件事直接与数据库交互是一项乏味的工作,会影响性能…有几种方法可以解决这个问题…您可以使用索引,缓存或Hibernate之类的工具,将所有数据保存在内存中,这样您就不必为每次操作查询数据库……luceneIndexer之类的工具非常流行,可以解决您每次都要访问数据库的问题……

直接与数据库交互每件事都是一项繁琐的工作,会影响您的工作性能…有几种方法可以解决这个问题…你可以使用索引,缓存或Hibernate之类的工具,将所有数据保存在内存中,这样您就不必为每次操作查询数据库了……有luceneIndexer之类的工具非常流行,可以解决您每次访问数据库时遇到的问题……

什么样的数据库