Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.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
Database 为Delphi、Firemonkey存储20 GB的适当数据库_Database_Delphi_Text_Full Text Search_Firemonkey - Fatal编程技术网

Database 为Delphi、Firemonkey存储20 GB的适当数据库

Database 为Delphi、Firemonkey存储20 GB的适当数据库,database,delphi,text,full-text-search,firemonkey,Database,Delphi,Text,Full Text Search,Firemonkey,我没有数据库开发方面的经验,因此我需要您的建议,以选择可在Firemonkey中使用的数据库 我需要存储html文件(现在没有媒体,但可以有),它们的总大小约为20GB(未压缩文本)。一个主要功能必须是在数据库中最大限度地快速搜索文本,并且必须能够实现人工搜索(如谷歌)。此外,还可以进行压缩(20GB的存储空间太大了。如果压缩会导致搜索速度变慢,则无需进行压缩) 什么样的数据库适合我的关注? 非常感谢你的建议 编辑 要求: 价格:免费 位置:本地或远程 操作系统支持:Windows 系统要求:占

我没有数据库开发方面的经验,因此我需要您的建议,以选择可在
Firemonkey
中使用的数据库

我需要存储html文件(现在没有媒体,但可以有),它们的总大小约为20GB(未压缩文本)。一个主要功能必须是在数据库中最大限度地快速搜索文本,并且必须能够实现人工搜索(如谷歌)。此外,还可以进行压缩(20GB的存储空间太大了。如果压缩会导致搜索速度变慢,则无需进行压缩)

什么样的数据库适合我的关注? 非常感谢你的建议

编辑 要求:

  • 价格:免费
  • 位置:本地或远程
  • 操作系统支持:Windows
  • 系统要求:占用空间大的数据库 (希望以更好的表现交换)
  • 性能:快速文本搜索
  • 并发用户:20
  • 全文索引和搜索:人类(类似谷歌)快速 需要进行文本搜索
  • 可管理性:没有多大关系

  • 我知道一个在线网络法律数据库,它可以在毫秒内搜索100GB的信息。我需要同样的性能,需要像谷歌一样的搜索。

    我不是DBA,所以我不能直接说,老实说,我不确定是否有人能直接回答这个问题,因为这只是其中的一种情况

    这是比较功能和平台兼容性的一个很好的起点。我认为这里要考虑的主要问题是硬件将如何运行,以及如何最好地利用它来完成手头的任务。

    如果您有一个服务器场,确保您的数据库支持分布和某种负载平衡(据我所知,大多数都在某种程度上支持)

    为了加快搜索速度,除非你编写了一个自定义算法,以某种方式搜索压缩版本,否则我认为你会希望保持数据未压缩。搜索压缩数据实际上可能更快。如果您能够使用压缩文件的索引与纯文本搜索参数进行比较,那么您只需查找索引中匹配的键。如果在索引中找到任何,请在压缩数据中检查它们。由于没有大量的自定义代码,我还没有听说过任何数据库支持这种搜索压缩文本的想法(尽管在这一点上我很容易出错)

    如果在执行搜索之前需要对整个数据集进行解压缩,则很可能会慢得多(与CPU时间相比,内存相对便宜)。看起来Firemonkey有有限的DBs可供选择,这也有助于缩小您的选择范围

    根据您编辑的问题,我建议您编写(或查找)一个解析器或正则表达式,从HTML中提取您希望搜索的所有重要元素。然后将它们存储在数据库中,并提供在HTML中找到它们的位置的参考。在类似谷歌的搜索中,如果你指的是它如何纠正拼写错误和使用同义词,那么你可能需要某种自定义代码来查找拼写词典和同义词词典。我相信在任何现代数据库中进行全文搜索都可以处理在where子句中使用LIKE或类似语句进行查询的需要


    看来不管怎样,ldsandon的答案涵盖了大部分内容。太长,读不下去了如果不感谢您的阅读。

    Delphi数据库访问层与FireMonkey是分开的,它与VCL使用的是相同的(尽管FM AFAIK仅依赖LiveBinding来访问数据,但在您的情况下这不是问题)

    如今,20GB的数据实在不多。如果配置得当,几乎任何数据库都可以毫不费力地处理它们。选择哪种发动机取决于:

    • 普莱斯:你打算花多少钱买它
    • 位置:您需要本地数据库(同一台机器)还是远程数据库(LAN或WAN)
    • 操作系统支持:应该在哪个操作系统上运行
    • 系统要求:您是否需要占用空间小的数据库,或者可以使用占用空间大的数据库(希望可以交换更好的性能)
    • 性能:要求的性能是什么
    • 并发用户:有多少用户将并发连接到数据库
    • 全文索引和搜索:并非所有数据库都提供现成的全文索引和搜索
    • 可管理性:某些数据库可能需要比其他数据库更多的管理

    还没有“一个数据库适合所有人”的说法。

    我推荐PostgreSQL来完成这项任务。它具有良好的性能,并内置了类似谷歌搜索的全文搜索功能。它是免费的,开源的


    不幸的是,Delphi没有现成的Postgres数据访问组件。您可以通过ODBC进行连接,也可以从购买组件,例如,或。

    我选择Microsoft SQL Server Express Edition。我认为2008 R2是最新的稳定版本,但也有Denali(2011)。它匹配你所有的生物


    您可以使用ADO进行处理

    您考虑过NoSQL数据库吗?维基百科的文章解释了它们与SQL数据库的区别,并提到它们适合作为文档存储

    本文列出了文档存储类别中的大约12个实现,其中许多是开源的。(大野兔、库奇达、蒙哥达)

    关于Stackoverflow的这个问题包含一些指向Delphi客户端的指针:


    <>我也会考虑在应用服务器上缓存,以加快搜索速度。当然还有一个文本索引解决方案,比如。

    试试Advantage数据库服务器

    它易于管理和配置。 都是dbase-l