标签: non-relational-database

在非关系数据库中存储喜欢

要旨

我在我的应用程序中实现了一个喜欢按钮。假设用户能够喜欢其他用户的产品。

问题

我现在想知道以下哪种方法是将这些喜欢存储在非关系数据库(在我的例子中是 MongoDB)中最有效和最健壮的方法。重要的是,没有用户可以喜欢一个产品两次。

可能的解决方案

(1) 存储那些喜欢产品本身的用户 ID,并通过以下方式跟踪喜欢的数量 likes.length

// Product in database
    {
        likes: [
            'userId1',
            'userId2',
            'userId3',
            ...
        ],
        ...
    }
Run Code Online (Sandbox Code Playgroud)

(2) 存储用户自己喜欢的所有产品,并通过产品上的数字跟踪喜欢的数量

// User in database
{
    likedProducts: [
        'productId1',
        'productId2',
        'productId3',
        ...
    ]
    ...
}
// Product in database
{
    numberOfLikes: 42,
    ...
}
Run Code Online (Sandbox Code Playgroud)

(3)也许有更好的解决方案?

无论哪种方式,如果产品有很多喜欢或用户喜欢很多产品,则有大量数据,只需加载即可显示喜欢并检查用户是否已经喜欢它。

database non-relational-database mongoose mongodb nosql

7
推荐指数
2
解决办法
2206
查看次数

SimpleDB到ActiveResource.轨道

我正在寻找一种将ActiveResource映射到SimpleDB的方法

我想避免使用插件/宝石,因为我所使用的都是过时/错误/没有混淆

看起来似乎很难,我想知道你是否有人成功实现了一个使用simpleDB作为主动资源的rails应用程序.你是怎么做到的?谢谢.

ruby-on-rails non-relational-database amazon-web-services amazon-simpledb

6
推荐指数
1
解决办法
743
查看次数

设计可轻松迁移到Google App Engine

我将很快开始设计一个Web应用程序,虽然我在SQL世界中有很多经验,但我不知道我需要考虑这样做,目标是在非常近的地方迁移到GAE未来.

或者,我可以从一开始就为GAE设计应用程序,所以在这种情况下,我需要考虑哪些差异?换句话说,为GAE编写应用程序的DO和DON是什么,来自过去的关系数据库.

python google-app-engine web2py non-relational-database relational-database

6
推荐指数
1
解决办法
421
查看次数

Titan和Neo4j图形数据库有什么区别?

我曾在关系数据库工作; 但现在想了解图数据库.我才知道这两个是图数据库.这两个数据库有什么区别.我们应该在他们中间选择什么?

database non-relational-database neo4j graph-databases titan

6
推荐指数
3
解决办法
5011
查看次数

为什么我要使用非关系数据库?

数据库中的最新热点似乎集中在非关系数据库上.为什么?这似乎适得其反.例如,以关系方式表达我的数据对我来说更有意义(Django + SQL中的表示例代码):

class Post(models.Model):
    name = models.CharField()
    created = models.DateTimeField(auto_now_create = True)

class Comment(models.Model):
    text = models.TextField()
    post = models.ForeignKey('Post')
    created = models.DateTimeField(auto_now_create = True)
Run Code Online (Sandbox Code Playgroud)

SQL:

create table post (id int primary key auto_increment,
        name varchar,
        created datetime);

create table comment(id int primary key auto_increment,
        text text,
        post_id int,
        created datetime,
        foreign key post_id references post(id));
Run Code Online (Sandbox Code Playgroud)

SQL的强大之处在于这些信息中可以表示 这么多的方式.当然,存在整个对象关系映射问题,但我将其视为一个特征,而不是一个问题.使用SQL,我可以获取比昨天更早的给定帖子的所有不同注释,将所有这些注释整理在一起,并生成统计信息.可以为非关系数据库做同样的事情吗?

使用非关系数据库(如MongoDB)似乎也会影响性能,因为您会立即获取整个对象图,而不是您最不需要的对象图.

有人可以向我解释使用非关系数据库的好处是什么?

database non-relational-database relational-database

5
推荐指数
1
解决办法
1万
查看次数

Django 1.8 和 MongoDB?

这个问题已经在 StackOverflow 上问过了,

问的问题可以追溯到 2013 年,现在是 2015 年,Django 快速成长。

截至 2015 年,在 Django 1.8 中使用 mongodb 的情况如何?

Django 是否开箱即用地支持 Monogodb(使用数据库适配器)?还是应该使用像 django-nonrel 这样的其他发行版?

django non-relational-database mongodb django-nonrel django-1.8

5
推荐指数
1
解决办法
2872
查看次数

MongoDB 架构适用于因不同 SKU、价格和库存而异的电子商务产品

我的目标是拥有具有一些基本信息的产品,例如

  • 姓名
  • 描述
  • 品牌/制造商
  • 尺寸和重量

并且每个产品都可以有基于以下的选项:

  • 尺寸
  • 颜色
  • 材料

我读过几篇文章,但找不到适合我问题的答案,即如何反映所有这些可能的选项组合可以有不同的 SKU、价格和库存数量。另外,我想为不同颜色的产品提供不同的图像。

所以我目前的想法是为所有选项建立单独的集合:

  • 尺寸
  • 颜色
  • 材料

然后为产品文档中的所有这些选项提供指针数组,并且附加数组variations反映选项的每种可能组合并添加SKU,pricestock字段。

{
  _id: "12345",
  name: "My Product",
  ...
  colors: [
    {
      _id: "Color_1",
      images: [
        "http://myserver.com/images/product_12345_1",
        "http://myserver.com/images/product_12345_2",
      ]
    },
    {
      _id: "Color_3",
      images: [
        "http://myserver.com/images/product_12345_3",
        "http://myserver.com/images/product_12345_4",
      ]
    }
  ],
  sizes: [
    {
      _id: "Size_5"
    },
    {
      _id: "Size_9"
    }
  ],
  materials: [
    {
      _id: "Material_2"
    }
  ],
  variations: [
    {
      color: "Color_1",
      size: "Size_5",
      material: "Material_2",
      SKU: …
Run Code Online (Sandbox Code Playgroud)

non-relational-database mongodb e-commerce database-schema

5
推荐指数
1
解决办法
1万
查看次数

GDBM的替代或成功

我们有一个GDBM键值数据库作为负载均衡的面向Web的应用程序的后端,该应用程序是用C++实现的.应用程序提供的数据已经变得非常大,因此我们的管理员已将GDBM文件从"本地"存储(在Web服务器上,或非常接近)移动到大型,共享,远程,NFS挂载的文件系统.

这影响了性能.我们的性能测试(在测试环境中)显示页面加载时间从数百毫秒(对于本地磁盘)跳跃到几秒(通过NFS,本地网络),有时甚至高达30秒.我相信问题的很大一部分是应用程序从GDBM文件中进行大量随机读取,并且这些在NFS上比较慢,而且在生产中会更糟糕(前端和后端都有甚至更差)他们之间的网络硬件更多)和我们的数据库变得更大.

虽然这不是一个关键的应用程序,但我希望提高性能,并提供一些资源,包括应用程序开发人员时间和Unix管理员.我的主要约束是时间只有几周的资源.

在我看来,我的选择是:

  1. 通过调整参数来提高NFS性能.我的直觉是我们不会从中得到很多,但之前我错了,而且我对NFS调优并不是很了解.

  2. 移动到其他键值数据库,例如memcachedbTokyo Cabinet.

  3. 用其他协议替换NFS(已提到iSCSI,但我不熟悉它).

我该如何处理这个问题?

performance nfs non-relational-database key-value gdbm

4
推荐指数
1
解决办法
3438
查看次数

数据库的层级和网络模型究竟存在什么问题?

在EF Codd于1970年发表他的论文"大型共享数据库的数据关系模型"之前,分层网络是数据库的两个主要模型.

他们究竟出了什么问题,他们没有占上风?

database database-design non-relational-database relational-database

4
推荐指数
2
解决办法
2752
查看次数

过滤django-nonrel中的外键属性

基于非关系数据库中的外键属性进行过滤的最佳实践是什么?我知道缺乏join支持会使事情变得更加复杂,所以我想知道别人是如何解决它的.

就我而言,我有属于区域的事件,属于区域.我想过滤给定区域中的所有事件.一个Event具有site属性,是一个外键的Site,这反过来有一个region外键到Region:

region = Region.objects.get(id=regionID)
events = Event.objects.filter(site__region=region)
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为site__region需要a join并且在Google App Engine上运行的django-nonrel不支持.(我得到Caught DatabaseError while rendering: This query is not supported by the database.一个错误.)因此,我一直在迭代事件,添加匹配列表的事件:

events = list()
region = Region.objects.get(id=regionID)
for event in Event.object.all():
    if event.site.region==region:
        events.append(event)
Run Code Online (Sandbox Code Playgroud)

这是做事的好方法吗?有什么傻事我忽略了吗?提前致谢!

django google-app-engine non-relational-database django-nonrel

3
推荐指数
1
解决办法
1765
查看次数