database - IMDB(内存数据库)与 Java 集合

标签 database performance collections in-memory-database

我的问题是:有没有办法用 java.util.collections(ArrayList/HashMap/3rd party LIB 等...)实现数据库类型的功能(内存数据库提供)让我稍微描述一下。

我有具有 25 个不同属性的模型类帐户,并且我可以在 ArrayList 上存储 5000 个帐户的数据。同样,我可以通过创建表 t_Account 来保存内存数据库中的数据。现在我想实现一些基本操作,如下所述

  1. 根据每个属性按升序/降序排序。 (例如SQL的Order By操作)

  2. 根据每个属性的不同过滤条件过滤掉特定的模型帐户? (在 SQL 中对表应用 WHERE/AND 条件)

  3. 根据特定属性搜索特定帐户? (在 SQL 中对表应用 LIKE 操作)

总之我的主要目标是使用Java实现内存数据库相关功能,这应该和内存数据库操作一样好?

预先感谢您的宝贵时间和建议...

最佳答案

当然,只要您不这样做,您就可以执行数据库在内存中执行的部分操作

  • 想要实现复杂的查询

  • 寻找大数据集的性能:复杂的索引(包括其维护)并不是一件容易的事情

但是 5000 条记录是一个非常小的集合,因此您可以毫无困难地使用自定义函数和索引在内存中管理它们。排序、过滤、搜索可以在任何语言的小集合上轻松实现。

你好像用的是java("ArrayList"),看Collections.sort() 。只要您的比较函数很快,对小集合进行排序就会很快。

另一方面,使用像 sqlite 这样的小型数据库也很容易。如果您不确定是否可以从 java 解决方案开始,并在分析显示您无法足够有效地处理内存数据库以满足您的需要时集成外部工具。如果它很容易适合 RAM 并且您不必保留数据,请尝试在内存中进行。使用数据库的第一个原因是持久性。相反,如果您必须保留程序启动-停止(或崩溃)之间的记录,请使用数据库。

关于database - IMDB(内存数据库)与 Java 集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11045574/

相关文章:

database - 数据库中的人工键含义

database - 每天将 Postgresql 数据库从小型 SSD 自动备份到多个硬盘

performance - awk 超慢处理多行但不多列

java - ConcurrentHashMap 的迭代器给出奇怪的结果

php - laravel 集合复杂和/或表达式

java - 我应该使用哪种 Java 集合类型?

C#数据库连接保存在DLL中调用

php - 我希望有人能给我关于解决此问题的最佳方法的建议?

c# - 在 C# 中打开 Guid 的最有效方法

php - 分析 PHP 应用程序,50% 的时间忙于构建类——这样可以吗?