NoSQL、ElasticSearch 甚至老式关系数据库?
NoSQL, ElasticSearch or even old school relational database?
我们有一个在 DB2 数据库中存储事件记录的应用程序。我们有用户根据事件发生的时间来查询这些事件,并且可以选择一些 id 作为搜索条件。
- 数据只写入一次,这些记录没有更新。
- 查询没有连接,只从这个查询中选择条目 table
- 每天约 100 万条条目
- 事件数据结构总是相同的,但是有一个内容字段,它可以只有一个短字符串或一个非常大的字符串(3500),或者如果字符串内容字段太短则可选的 clob 字段
目前这个概念可行,但查询速度不是很快。将来传入的事件将会增加。
所以我们目前正在考虑我们的解决方案,如果关系数据库是我们用例的正确解决方案,或者 NoSQL 解决方案是否可以更好地满足我们的要求。
在对不同的 NoSQL 解决方案(基于列、键值等)进行一些研究后,我们不知道其中一个是否适合。我们也看到了 ElasticSearch 作为替代方案,但不知道 ElasticSearch 使用哪种存储。
那么,您是否有任何想法可以做什么,或者我们的研究应该朝哪个方向发展,以适应这个用例。
此致,
马纳纳纳
我只能给你我的经验。几个月前,我们遇到了类似的问题。我们使用的是 mssql 数据库,并且正在考虑更改为 nosql 解决方案。
我调查了很多数据库,最终决定使用弹性搜索,因为它具有惊人的搜索速度和强大的功能。
设置超级简单。甚至设置集群也轻而易举。它在后台使用 lucene 进行搜索。
自从我们进行转换以来,我们没有遇到任何重大问题。
根据您的说法,您是否试图调整现有数据库尚不清楚。如果您没有这样做,调整现有解决方案通常比将所有数据移动到新平台(仍然需要调整)更有效(在时间和精力方面)。只有在清楚地用尽所有调整选项后,您才应该考虑迁移。
"Queries are not very fast" 似乎含糊不清。优化现有解决方案可能是成本最低、速度最快的选择,即使这意味着对现有数据库进行一些更改。调查查询缓慢的原因。 table 范围分区是每天、每周还是其他时间间隔,如果不是,那为什么不呢? table 是否使用行压缩?最常见的谓词是否有 suitable 索引,它们是否正在使用?
我们有一个在 DB2 数据库中存储事件记录的应用程序。我们有用户根据事件发生的时间来查询这些事件,并且可以选择一些 id 作为搜索条件。
- 数据只写入一次,这些记录没有更新。
- 查询没有连接,只从这个查询中选择条目 table
- 每天约 100 万条条目
- 事件数据结构总是相同的,但是有一个内容字段,它可以只有一个短字符串或一个非常大的字符串(3500),或者如果字符串内容字段太短则可选的 clob 字段
目前这个概念可行,但查询速度不是很快。将来传入的事件将会增加。 所以我们目前正在考虑我们的解决方案,如果关系数据库是我们用例的正确解决方案,或者 NoSQL 解决方案是否可以更好地满足我们的要求。
在对不同的 NoSQL 解决方案(基于列、键值等)进行一些研究后,我们不知道其中一个是否适合。我们也看到了 ElasticSearch 作为替代方案,但不知道 ElasticSearch 使用哪种存储。
那么,您是否有任何想法可以做什么,或者我们的研究应该朝哪个方向发展,以适应这个用例。
此致, 马纳纳纳
我只能给你我的经验。几个月前,我们遇到了类似的问题。我们使用的是 mssql 数据库,并且正在考虑更改为 nosql 解决方案。
我调查了很多数据库,最终决定使用弹性搜索,因为它具有惊人的搜索速度和强大的功能。
设置超级简单。甚至设置集群也轻而易举。它在后台使用 lucene 进行搜索。
自从我们进行转换以来,我们没有遇到任何重大问题。
根据您的说法,您是否试图调整现有数据库尚不清楚。如果您没有这样做,调整现有解决方案通常比将所有数据移动到新平台(仍然需要调整)更有效(在时间和精力方面)。只有在清楚地用尽所有调整选项后,您才应该考虑迁移。
"Queries are not very fast" 似乎含糊不清。优化现有解决方案可能是成本最低、速度最快的选择,即使这意味着对现有数据库进行一些更改。调查查询缓慢的原因。 table 范围分区是每天、每周还是其他时间间隔,如果不是,那为什么不呢? table 是否使用行压缩?最常见的谓词是否有 suitable 索引,它们是否正在使用?