Nosql 有人能解释一下伏地魔项目或类似的键值存储是有用的吗?
我可以看到自己正在使用缓存来自传统RDBMS查询的结果。但在这种情况下,它与其他(Java)缓存系统(如EhcacheJCache等)相比几乎没有什么优势Nosql 有人能解释一下伏地魔项目或类似的键值存储是有用的吗?,nosql,key-value,voldemort,Nosql,Key Value,Voldemort,我可以看到自己正在使用缓存来自传统RDBMS查询的结果。但在这种情况下,它与其他(Java)缓存系统(如EhcacheJCache等)相比几乎没有什么优势 我还能在哪里使用Project Voldermort或类似的键值存储?您是如何在业务应用程序中使用此功能的?伏地魔项目是这一运动的一部分。计算机体系结构的发展趋势将数据库推向一个需要水平可伸缩性的方向。NOSQL试图解决这一需求 这种键/值存储所声称的好处之一是能够在不需要传统RDBMS的开销的情况下浏览大量数据 提高数据库速度的一种方法是反
我还能在哪里使用Project Voldermort或类似的键值存储?您是如何在业务应用程序中使用此功能的?伏地魔项目是这一运动的一部分。计算机体系结构的发展趋势将数据库推向一个需要水平可伸缩性的方向。NOSQL试图解决这一需求 这种键/值存储所声称的好处之一是能够在不需要传统RDBMS的开销的情况下浏览大量数据
提高数据库速度的一种方法是反规范化。以MySQL为例:
CREATE TABLE `users` (
`user_id` INT NOT NULL AUTO_INCREMENT,
… -- Additional user data
PRIMARY KEY (`user_id`)
);
CREATE TABLE `roles` (
`role_id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(64),
PRIMARY KEY (`role_id`)
);
CREATE TABLE `users_roles` (
`user_id` INT NOT NULL,
`role_id` INT NOT NULL,
PRIMARY KEY (`user_id`, `role_id`)
);
整洁、整齐、规范。但是,如果要获取用户及其角色,查询会很复杂:
SELECT u.*, r.*
FROM `users` u
LEFT JOIN `user_roles` ur ON u.`user_id` = ur.`user_id`
JOIN `roles` r ON ur.`role_id` = r.`role_id`;
如果将其反规范化,它可能会如下所示:
CREATE TABLE `users` (
`user_id` INT NOT NULL AUTO_INCREMENT,
`role` VARCHAR(64),
… -- Additional user data
PRIMARY KEY (`user_id`)
);
等价的查询是:
SELECT * FROM `users`;
这将改善查询的某些性能特征:
分组依据
和计数
。如果它是非规范化的,您将把它存储在另一个表中,该表专门用于保存角色和拥有该角色的用户数根据我的经验,对于大型应用程序来说,这种权衡是非常值得的。如果您想在几个月前了解更多有关Cassandra的实际应用,您可能会发现它很有用。我知道这是一项很酷的技术。我想知道普通企业是如何使用它的。所谓正常业务,我指的是使用传统关系数据库的非谷歌和非facebook类型的公司。我正在寻找人们将此技术用于“正常”业务的用例或场景