编辑:
我正在寻找是否可以缓存大数据(整个数据库或大量表)的原因是因为数据库列是加密的,即使对于具有不同对称 rijndael 密钥的不同 IV 向量的不同行也是如此。因此 SQL 过滤是没有选择的,或者索引没有意义。此外,应用程序,实际上是云和商业应用程序的框架,被设计为尽可能独立于数据库。您建议仅加密包含真正敏感信息(例如电子邮件地址或 SSN)的表的某些列,但这会使框架不标准,您需要为加密列和未加密列编写新代码应用。如果缓存没有问题,那么我可以基于对象、字典、linq 等进行所有操作。
我计划在内存中缓存所有或大部分数据库表(加密)。
我正在开发一个基于云的应用程序,它将有 100MB SQL Server / MySQL 限制,将由不同的客户端共享。(所以我可以在缓存时按客户端对它们进行分组;甚至根据业务模型创建更小的缓存组)
我不知道;SELECT * FROM
获取 100000 行、10 MB 或 20 MB 的数据等需要多少时间。
我进行了快速搜索,但找不到任何基准来说明检索大量行的“大致”持续时间。
我的公司正在使用现代世界中大多数中小型公司常用的商业软件。据说每天都有活跃记录,4.5年只有20MB的MySQL数据。
我检查了 MySQL Administrator,发现最大的表是 inventory_movements,有 7MB 的数据和 45000 行。
我使用 MySQL Query Browser 并执行以从该表中选择所有记录。软件工具指出它花费了0.4971 秒。现在我想我有一个想法。
SELECT * FROM
在 C# .NET 中获取所有行(仅纯、无过滤器、连接);来自 SQL Server 数据库的 7MB 数据 - 45000 行会产生相似的持续时间,对吗?我还可以,如果是 2 或 3 秒。
这边走; 至少我有一个想法;如果我缓存 100MB 数据;这可能需要 5 到 30 秒。(数据在获取期间不会被解密)(稍后会在需要时在 RAM 中解密)(我知道我失去了大部分数据库功能。查询将基于缓存中的对象)(我是刚开始在写这篇评论时思考;如果我成功了;我什至可以使用 xml 作为免费的数据库源,因为我正在为这个应用程序设计类似 OR/M 的函数)
我的问题是;
只要我有足够的资源,缓存100MB的数据没有任何问题,对吧?换句话说; 只要我有内存资源就缓存 100 MB,甚至 500 MB,1 GB 并不奇怪?
第二; 你认为我用 SELECT 获取记录的时间计算是乐观的吗?
在应用程序开始时;我可以缓存数据;并管理缓存和数据库中修改/添加/删除的数据,而无需频繁重新加载缓存。