我有一个存储了很多网页的数据库。
我将需要处理我拥有的所有数据,因此我有两个选择:将数据恢复到程序或使用我将创建的一些函数直接在数据库中处理。
我想知道的是:
- 在数据库中做一些处理,而不是在应用程序中做一些处理是好的 想法?
- 什么时候推荐,什么时候不推荐?
- 有优缺点吗?
- 是否可以将语言扩展到新功能(外部 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/