草庐IT

schema-design

全部标签

design-patterns - 用于多个生产者和多个消费者的 Redis pub sub

假设有N个生产者和订阅这N个生产者的M个用户。这里N生产者生产N种不同类型的消息,例如producer1producesmessageType1,producer2producesmessageType2,producer3producesmessageType3,...producerNproducesmessageTypeN.M个用户可以订阅这些消息。一个用户可以订阅多种类型的消息。例如user1consumes(messageType1,messageType2,messageType10)user2consumes(messageType14,messageType5)..us

database-design - 正确存储构建 "Last seen Products"

想知道像许多电子商务网站(例如亚马逊)那样构建“最后一次看到的产品”功能的最佳存储是什么。以下是一些要求:活跃用户:200MLastSeenProducts按类别(即:鞋子、电子产品等)。大约有500个类别每个类别存储10个产品(虽然不会访问所有类别)LastSeenProducts必须持久化,这样无论何时用户重新登录,都可以获取并构建列表。检索列表的时间应小于100毫秒。我正在考虑以太Redis或Cassandra。看起来两者都为此功能提供了很好的功能(某种时间线),但我不确定每一个的优缺点是什么。想法?谢谢 最佳答案 如果您的数

node.js - Redis 发布订阅 : Design pattern

我们正在使用socketi/o处理大量实时数据。用户使用套接字发送/接收数据。由于我们正在使用负载均衡器,因此我们不能使用套接字i/o的命名空间模型,而是在套接字中使用redis的pub/sub。到目前为止,我们为每个用户每个channel的订阅创建了一个单独的redis连接。但最近我们遇到了redis上达到最大连接数的问题(Error:Readycheckfailed:ERRmaxnumberofclientsreached),我们发现这是因为通过pub有太多的redis连接子。为了解决这个问题,我想到,与其为每个用户使用多个订阅Redis连接,不如有一个发布Redis连接和一个订阅

node.js - 防止 NoSQL 注入(inject) : Isn't mongoose supposed to convert inputs based on given schema?

希望使用mongodb防止对node.js应用程序的NoSQL注入(inject)攻击。varmongoose=require('mongoose');//"^5.5.9"varSchema=mongoose.Schema;varhistorySchema=newSchema({userId:{type:String,index:true,},message:{},date:{type:Date,default:Date.now,}});varhistory=mongoose.model('history',historySchema);//thefollowingistoillust

mongodb - 对我的案例MongoDB模式设计的看法

这是MongoDB上一个非常常见的问题:何时嵌入以及何时引用。然而,就我而言,这似乎是一个两难选择。我有一个文档,其中有一个引用,我可以将它嵌入其中,但它会花费我的磁盘大小。但是如果我做一个引用,它会给我相当大的性能成本。这是一个例子,假设我有这个成员,我的问题是“细节”:Member:{_id:"abc",detail:{name:"StackOverflow",website:"www.stackoverflow.com"}}我希望该成员的详细信息出现在该成员“asdf”创建的每个博客中,因为显示的每个博客都会显示该成员的详细信息。所以我可以为我的博客文档做2个选项:首先,通过仅放

mongodb - Mongoose中sub docs和population的区别以及对数据库schema的疑惑

我是MongoDB和MongooseJS的新手。我也很不擅长创建数据库,抱歉。第一个问题子文档和人口有什么区别?看着docsexample,Parent-Childrensubdoc似乎与Person-Stories群体非常相似。数据库架构问题场景:用户可以创建多个Canvas。每个Canvas都可以承载多个Shapes。每个形状可以有两种类型:简单或复杂。简单形状可以是正方形或圆形(对象)。复杂形状由框架和Material组成。Canvas|Shape/\SimpleComplex:Frame,Material/\SquareCircle现在,一个Shape只能分配给1个Canvas

node.js - Mongoose : Populate nested schemas

这是关于Mongoose嵌套填充方法。我尝试使用populate方法来填充文档,但仍然有问题。varuserSchema=Schema({email:{type:String,required:true,unique:true},fullName:String,meetings:[{type:Schema.Types.ObjectId,ref:'Meeting'}]});userSchema.statics.findById=function(id,callback){this.findOne({_id:id}).populate({path:'meetings',select:'_c

mongodb - 更好地理解 Mongoose Schema

我是MongoDb世界的新手,来自MSSql/Entity框架环境。我对Mongo感到兴奋,因为:MongoDb'sabilitytodynamicallychangetheshapeoftheclass/table/collectionatruntime.EntityFramework没有提供给我。为什么这如此重要?因为我想创建一个通用的库存应用程序并让产品类/集合/表是动态的以便客户添加与其业务相关的字段,而这些字段不能被所有人使用,例如。VinNumber、ISBNnumber等现在我开始了解Mongoose以及它如何提供模式,这对我来说有损于上述MongoDb的灵active。

node.js - 在 Mongoose Schema 中创建一个字段,该字段是对同一文档中其他字段的引用

因此,如果修改了原始字段,则复制的字段也会更改。伪代码示例:userSchema={firstName:{type:String},lastName:{type:String},displayName:firstName+''+lastName}这样的事情可能吗?编辑:我需要根据那个字段发出请求,所以我不能在检索它们时只连接这些字段。 最佳答案 您可以使用Hookhttp://mongoosejs.com/docs/middleware.htmluserSchema={firstName:{type:String},lastName

node.js - Mongoose 两次定义字段时抛出 `Field is not in schema` 错误

我正在使用Nodev0.10.31和mongoose@3.8.22。我想我遇到了一个在特定事情发生时出现的错误。此错误的影响使我无法在同一架构上拥有字段“name”和“father.name.full”。这就是我定义模式的方式:'usestrict';varmongoose=require('mongoose');mongoose.connect('mongodb://localhost/myapp');varPersonSchema=newmongoose.Schema({name:{type:mongoose.Schema.Types.ObjectId,ref:'Name',//i