Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.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 - Fatal编程技术网

Java 数据获取技术

Java 数据获取技术,java,database,Java,Database,我想了解有关从数据库获取数据的建议。 例如,我的数据库中有数以百万计的数据,我希望使用某种编程语言在我的网页中以每页10行的形式显示这些数据。 那么最好的办法是什么呢 获取所有数据并进行分页 或者只获取有限的数据 因为在第一种数据获取方式中可能存在数据操纵的机会,例如,如果我汇集所有数据并显示它,并且用户在显示数据后更改了一些细节。只需一个小小的改变,我就需要再次获取所有数百万的数据。 而在第二种数据获取方式中,我需要连接always数据库,以获取每页10行数据。 请务必澄清我的疑问请务必使用

我想了解有关从数据库获取数据的建议。 例如,我的数据库中有数以百万计的数据,我希望使用某种编程语言在我的网页中以每页10行的形式显示这些数据。

那么最好的办法是什么呢

  • 获取所有数据并进行分页
  • 或者只获取有限的数据
  • 因为在第一种数据获取方式中可能存在数据操纵的机会,例如,如果我汇集所有数据并显示它,并且用户在显示数据后更改了一些细节。只需一个小小的改变,我就需要再次获取所有数百万的数据。
    而在第二种数据获取方式中,我需要连接always数据库,以获取每页10行数据。

    请务必澄清我的疑问

    请务必使用查询级别限制/分页的有限数据获取进行分页。在我看来,加载所有数据并不是一个选项,因为它会给系统资源带来不必要的压力,而且实际上编写代码要稍微困难一些

    拥有一个页面变量,并使用该变量创建传递给数据查询的参数。如何实际执行查询完全依赖于数据库

    MySQL的简单示例可以是两步查询:

    select count(*) from ... where ...
    
    要获得可能结果的数量,则

    select ... from ... where ... limit *offset*,*count*
    

    其中*count*是每页的项目数,*offset*是*count*乘以页码。对您查询的每个页面都执行这两个查询,以捕获更改。

    到目前为止,最简单的选择是根据需要获取数据,如中所建议。然而,这可能不会产生最好的性能(尽管如果应用程序不是性能关键型的,我不会再费心做更多的事情)

    如果只想显示10条记录,就不要获取数百万条记录。虽然一个值得考虑的选项(如果您的应用程序具有对数据的独占访问权)是始终加载所有数据,并将数据库更多地用作备份设备,只有在应用程序重新启动时才能读取,但我认为对于这种模型来说,数百万行有点多

    尽管缓存可能是一个不错的选择。有一个缓存算法列表。我可能会建议最近最少使用

    服务器端缓存通常是一个值得考虑的问题危险-此处对数据结构的低效选择(或对应用程序的使用方式缺乏了解)可能会降低应用程序的性能

    客户端缓存可以提供更快的应用程序响应时间,特别是在存在高延迟的情况下。请记住,每个用户都有自己的缓存-这仅适用于某些应用程序

    在常规缓存的基础上,对于上述任何一种,您都可以加载10个所需行周围的100行(假设用户转到下一页/上一页是常见的,并且此操作实际上是有意义的)。在这里,100将是一个数字——理想的数字在很大程度上取决于应用程序的使用方式

    以堆栈溢出为例,最常见的(select)查询可能是显示新问题列表。这些都可以缓存(服务器端),因此无需数据库查询即可获取它们

    有用的注释 对于服务器端缓存,如果您的应用程序以独占方式访问数据—无论何时有任何更改,这些更改都将通过您的应用程序进行,因此您只需修改本地副本或清除缓存,而无需查询数据库以查看其是否更改


    对于客户端缓存,或者,如果您的应用程序不具有对数据的独占访问权限,则可以在数据库中的某个位置添加版本控制或上次修改的值,以便查询以检查更新。

    获取有限的数据并进行分页。加载数百万条记录只显示其中的10条显然是浪费时间和内存。