-1

我知道它是一个非关系数据库,但这并不意味着关系数据不存在。

例如,我有一个包含这样的 url 的表(简化):

url | domain

我有一个包含这样的域的表(简化):

domain | favicon_path

因为许多不同的 url 可能具有相同的域,所以我不想在拉取数据以发送到视图时为每个域重复 favicon_path。

因此,当我需要数据时,我使用了一个简单的(例如简化的)连接命令。

"SELECT bookmarks.*, domains.favicon FROM bookmarks JOIN 
  domains ON bookmarks.domain=domains.domain"

我将如何使用 no-sql 处理这种情况?

indexedDB我计划在客户端(javascript)和MongoDB服务器(java)上实现 no-sql 。

4

2 回答 2

0

如果要使用面向文档的 DB,可以使用以下文档结构:

URL_ID : { "domain":"id_of_domain", "another_staff": "..." }

DOMAIN_ID : { "favicon_path" : "另一个文档的路径或 id", "another_staff": "..." }

因此,您可以通过 id 从数据库中获取具有 URL_ID 的文档,然后获取域类型的文档。

添加: 您可以使用以下方法生成 id。创建只有一个字段的特殊文档(如序列) - current_value_of_sequence。每次插入 DB,您都必须获取此序列并增加它。一些像 Couchbase 这样的数据库对这种机制有低级支持,这种机制非常高效且线程安全。

于 2013-11-12T16:38:41.780 回答
0

根据多年在 IT 领域的工作经验,我会说大多数业务模型都可以像以下两种数据结构一样简单地标准化:

  1. 实体信息。
  2. Entity list.

For example, in a book store business, we will have the Book entity, and many list that containing all of the books or a subset of the whole books.

With a NoSQL database, such as Redis or SSDB, the Book entity is stored with Key-Value, where key is the book sn, and value is the stringified book info(title, publish date, description, etc). While book list(list by publish date, list by price, etc) are stored in zset data type.

于 2013-11-14T09:46:26.077 回答