我使用带有postgresql的django 1.11
作为数据库。我知道如何存储和检索数据库中的数据,但我找不到一个正确的方法来存储和检索两个用户的整个讨论的示例。你知道吗
这是我的简单想法:
两个用户连接到127.0.0.1
,在这个页面中有一个文本区域窗体。两个用户都可以写入文本区域,然后按一个按钮发布内容。页面将重新加载,现在显示所有消息。你知道吗
我想知道的是,如果正确的存储和检索方法是:
one db row => single message user
如果两个用户交换,比如说15条消息,它将存储15行,并且要进行一个单音讨论,我可以在数据库中放入另一列类似于讨论“id”的内容,因此15行将具有相同的id和用户:
db row1 ---> "pk=1, message=hello there, user=Mike, id=45")
db row2 ---> "pk=2, message=hello world, user=Jessy, id=45")
当页面在django中运行时:
discussion = Discussion.objects.all().filter(id=45)
检索讨论。你知道吗
只有两个用户可以私下讨论,所以每两个用户都有一个讨论页面,比如127.0.0.1/one、127.0.0.1/two等等。。你知道吗
如果这是存储和检索数据库的正确方法,那么我的问题是它将如何扩展?我是否可以依靠这种设计来高效地存储和检索数据库中的数据,否则不久的将来数据量会很大?我担心1000个用户可能会很快成长为10000行。你知道吗
因此,你的问题的答案取决于你未来打算如何使用这些数据,以及你需要如何处理这些数据。完全可以将N个用户之间的整个会话存储在一个列式数据库(如Postgres)中,作为每条消息的单独记录。但是,与所有编程问题一样,有多种范例可以回答您的问题。我将在这里探讨其中几个的优缺点(当然还有更多)。你知道吗
范例1每条消息的新记录(行)
优点:
缺点:
范例2每个会话的新记录(行)
优点:
缺点:
哪个最好?基督教青年会
同样,可能有六种或更多的方法可以存储应用程序的消息,所有这些都取决于下游的需要。此外,我还建议您研究像Apache Kafka这样的项目,这些项目专门用于消息发布,作为一种潜在的可扩展的插入式解决方案。你知道吗
三项建议:
这能回答你的问题吗?你知道吗
相关问题 更多 >
编程相关推荐