现在,像MongoDB或memcached这样的"NOSQL"或"仅对象"存储系统在世界上真正起步.我想知道是否有任何无法对它们执行的请求可以使用多个对象连接执行(在SQL中JOIN "table"
).换句话说,是否有连续几个单表查询无法处理的多表查询?
基本上,是否存在一个用例,通过在基于对象的存储系统中一次访问一个表,无法复制多表连接?
以下是使用has_man和has_many_through关系的常规3NF查询的一些示例.这些不是最复杂的查询 - 但它们应该为您提供概念的起点.请注意,{}中的任何值表示上次查询结果的值.
公司有很多用户
SELECT user.*, company.name as company_name FROM user LEFT JOIN company ON company.id = user.company_id WHERE user.id = 4
VS
SELECT * FROM user WHERE id = 4 SELECT * FROM company WHERE id = {user.comany_id}
俱乐部有许多学生通过会员资格
SELECT student.* FROM student LEFT JOIN membership on membership.student_id = sudent.id WHERE membership.club_id = 5
VS
SELECT * FROM membership WHERE club.id = 5 SELECT * FROM student WHERE id = {membership.student_id}
我想知道的原因是因为我想知道基于对象的系统(依赖于一次访问单个表对象)是否可以执行像PostgreSQL或MySQL这样的RDBMS数据库.
到目前为止,唯一错误似乎是需要更多查询.