3

我正在审查我的代码并意识到我花费了大量时间

  1. 从数据库中获取行,
  2. 格式化为 XML,
  3. AJAX GET 到浏览器,然后
  4. 转换回哈希 javascript 对象作为我的本地数据存储。

在更新时,我必须反转这个过程(除了使用 POST 而不是 XML。)

刚开始研究 Redis,我想我可以节省大量时间将对象保存在服务器上的键值存储中,并且只需使用 JSON 直接传输到 JS 客户端。但我虚弱的头脑无法预料离开 SQL DB 会放弃什么(即我害怕放弃 GROUP BY/HAVING 查询)

对于我的数据,我有:

  • 多对多关系,即 obj-tags、obj-groups 等。
  • 通过组合查询对象,即 WHERE tag IN ('a', 'b','c') AND group in ('x','y')
  • 自连接,即每个对象的所有标签 WHERE tag='a' (sql group_concat())
  • 很多外连接,即OUTER JOIN rating ON o.id = rating.obj_id
  • 和提要,这似乎是 REDIS 的强项

您如何成功地混合键值和 SQL 数据库?

例如,使用 SQL RANGE 查询(即 WHERE obj.id IN (1,4,6,7,8,34,876,9879,567,345, ...), 或相反亦然?

欢迎提出想法/建议。

4

3 回答 3

4

您可能想看看MongoDB。它适用于 JSON 样式的对象,并带有像索引和查询这样的 SQL。当您想要简单的查找而不是复杂的查询时,Redis 更适合存储列表和集合等数据结构。

于 2010-02-09T01:22:08.707 回答
2

现在实际问题更加明确(即您花费大量时间编写重复的转换代码以从一层/表示移动到下一层)也许您可以考虑编写(或搜索)一些自动化的东西,也许?

谷歌返回大量“将表格转换为 XML”(反之亦然)的结果,这有帮助吗?直接从表到键/值对的东西会更好吗?您是否尝试过以普遍的方式解决这个问题?

于 2010-02-08T11:06:29.687 回答
0

当您说“我花费大量时间”时,您的意思是这是大量的开发时间,还是指计算时间?

就个人而言,我对将 RDBMS 与非 RDBMS 解决方案混合持谨慎态度,因为当两种不同的范式发生冲突时,这可能会产生问题。

于 2010-02-05T10:26:58.567 回答