1

我正在开发几个 Web 服务 - 一个用于购买产品,另一个用于验证产品。多个客户将调用 BUY(大约 250/秒)和 VALIDATE 相同。他们需要在调用后端之前查询和更新表格数据结构。

我有一种感觉,使用像 Oracle 这样的关系数据库表来维护这种常见的数据结构会因为网络延迟而减慢速度(假设数据库和查询被优化)。有人建议我使用 EhCache 和 Hazelcast,但我更喜欢使用数据库表,因为我更了解它。

谁能确认通过网络访问数据库是否会成为应该每秒处理 250-300 个事务的应用程序的瓶颈?

当然,如果服务器实例出现故障并且我们丢失了数据结构的内存表示,我们就可以了。

4

2 回答 2

1

这实际上取决于您的应用程序在做什么。
当然,您可以使用具有昂贵硬件和昂贵网络硬件的数据库机器。
问题是——这真的需要吗?
正如一些评论中所述 - 如果您主要执行 READ(读取请求多于写入请求),缓存将主要帮助您。为了优化你应该考虑索引(例如 - 如果你存储地址,你可以考虑按“ip”字段索引,假设大多数不是按 ID 的查询都是按这个字段),
这只是正确的一部分数据库模式规划(这方面的其他方面可能是通过尽可能正确地建模数据来避免表之间的复杂连接),甚至可能是 NoSQL 数据库。
扩展怎么样 如果您要进行缓存和扩展,您应该使用分布式缓存/分布式数据结构。
例如,infinispan可以在这里提供帮助。
您还可以通过使用 in memory/in process(即 - 它的代码在 jar 中并共同托管在应用程序的 JVM 上)来提高性能,例如h2 - 这可以进一步减少查询时间。但再一次,这真的取决于你的具体用例,不幸的是你描述的太笼统了。

于 2012-07-13T19:54:34.910 回答
0

IMO,只要更新请求低于查询请求,缓存就会有所帮助......想象一下你缓存为一个大地图,如果你每次更新服务器上的行时你也需要更新,那么你将存储已经查询的值,并且你更新通过使其条目无效以再次执行对数据库的请求来缓存缓存。

于 2012-07-13T17:44:27.127 回答