gpt4 book ai didi

database - 将关系数据库转换为 couchDB (noSQL)

转载 作者:太空宇宙 更新时间:2023-11-04 02:35:33 25 4
gpt4 key购买 nike

我目前正在使用 NodeJS 和 socket.io 开发网络聊天。我需要一些帮助将一些关系数据库结构转换为 NoSQL。我对 NoSQL 世界非常陌生,这就是我在这里问这个问题的原因。

我的目标是存储用户及其注册的房间,以便我可以列出特定房间中的所有用户。

在 SQL 中我会做这样的事情:

--Users
John
Jack
James

--Room
Javascript
PHP
CSS

--Relation
Jack | PHP
Jack | CSS
John | PHP
James | Javascript

然后从房间如“PHP”的关系中选择用户

我实际上如何使用 couchDB 来做到这一点?我需要存储、列出和删除。用户是唯一的,房间也是唯一的,但一个用户可以在多个房间中。当用户断开连接时,他应该在各处被删除。如果用户离开房间,他应该被从该房间中移除。如何选择房间“PHP”中的所有用户?

最佳答案

我认为您不应该将信息保留在数据库中。房间应该是内存中包含用户 ID 数组的键。当用户进入房间时,将项目推送到数组中,并在用户离开时弹出。这里仍然要说明一些概念,即您可以使用 couchdb 做什么

像这样创建文档

 {
"user" : "scope77",
"room" : "php"
}

现在,由于您希望按照他们所在的房间获取所有用户,因此创建一个按房间对用户进行索引的 View ,如下所示

    function(doc){
if(doc.room)
emit(doc.room,doc)
}

现在调用此 View 将返回特定房间中的用户列表。

curl http://localhost:5984/db_name/design_name/view_name?key="php"

就是这样。这里要记住的一件事是,在关系模型中,您可能会为房间和用户创建单独的表,并引用它们以使数据标准化。在 couch db 中,虽然您可以链接文档,但它通常更容易,甚至更喜欢拥有重复和非规范化的数据。

因此,即使您可以为房间创建单独的文档,最好将房间名称与用户文档一起存储。

关于database - 将关系数据库转换为 couchDB (noSQL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22788892/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com