Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
最方便表示关系数据库的Java对象结构_Java_Database_Oop_Relational - Fatal编程技术网

最方便表示关系数据库的Java对象结构

最方便表示关系数据库的Java对象结构,java,database,oop,relational,Java,Database,Oop,Relational,假设您可以读取CSV文件中的一组数据,其中包含一些相互关联的表。什么样的Java对象结构(使用JDK提供的标准Java集合)最适合表示关系数据库,以服务与最常见的数据库查询类似的请求,包括标准selects以及count(*)、select distinct()、group by和其他最常见的查询。数据量相对较小,因此如果我们将所有内容都保存在内存中,就不会出现内存问题 只是想强调一下,这不是一个关于SQL解析的问题,也不是关于使用内存中的SQL数据库的问题。这是Java中最有效的后端关系数据库

假设您可以读取CSV文件中的一组数据,其中包含一些相互关联的表。什么样的Java对象结构(使用JDK提供的标准Java集合)最适合表示关系数据库,以服务与最常见的数据库查询类似的请求,包括标准selects以及count(*)、select distinct()、group by和其他最常见的查询。数据量相对较小,因此如果我们将所有内容都保存在内存中,就不会出现内存问题

只是想强调一下,这不是一个关于SQL解析的问题,也不是关于使用内存中的SQL数据库的问题。这是Java中最有效的后端关系数据库表示法,当您事先不知道所有特定的查询时。

如果您的问题是“像SQLite这样的数据库在内部使用什么样的数据结构?”那么答案远不简单,而且通常取决于实现。毕竟,不同数据库的一个主要卖点是它们如何选择数据结构

对于SQLite,提供了许多关于其内部工作的细节。类似的其他数据库在其文档中也提供了实现说明,但一般来说,所使用的数据结构是特定于使用情况和自定义的

从理论上讲,许多数据库实现为(在许多其他结构中),但这既不是要求,也不一定是“正确”的实现方式。他们使用的数据结构是多年反复试验、基准测试和艰苦工作的结果


针对你的评论:

假设您只有一个CSV文件,一个表,甚至不值得使用SQLlite和H2,而且所有这些都可以放在内存中,所以数据量并没有那么大。将该表表示为java对象的最佳方式是什么,预测通常会向数据库表显示的查询,但不知道需要如何预先查询它


我会使用SQLite或H2。两者都可以运行,并允许您对它们的数据运行任意SQL查询。如果您知道要查询什么,您可以将CSV解析为一个更特殊的数据结构,但如果您不知道要如何查询它,您就不可能希望创建一个比现有数据库工具更高效的数据结构。数据库是专门为“我不知道我将对这些数据运行什么查询”的用例而设计的。

我认为表示关系数据的最有效方法是在关系数据库中。为什么不将您的CSV解析为SQLite并查询它呢?好吧,这更像是一个理论问题,只是有兴趣,他们是如何做到的,比如说在SQLite内部?关系数据库如何?您可能希望编辑您的问题,以更清楚地表明它是理论性的(在这种情况下,回答它可能更好);看起来您是在征求关于如何实现关系数据存储的建议,这基本上是不可能简单回答的。dimo414-非常感谢您有趣的回答。你是对的,我没有合理地阐述这个问题。这不完全是理论问题。假设您只有一个CSV文件,一个表,甚至不值得使用SQLlite和H2,而且所有这些都可以放在内存中,所以数据量并没有那么大。将该表表示为java对象的最佳方式是什么,预测通常会向数据库表显示的查询,但不知道需要如何预先查询它?