Использование отношений в NoSQL против SQL - PullRequest
0 голосов
/ 16 декабря 2010

Для начала я новичок в концепции NoSQL.

По сути, я разрабатываю API, позволяющий пользователям создавать и хранить объекты в нашей базе данных.Это будет происходить через различные интерфейсные программы и приведет к тому, что программы будут сохранять личные данные на пользователя, программы будут обмениваться данными и получать данные - получая доступ к соответствующим данным многих пользователей.У пользователя может быть много объектов, и мы не накладываем ограничений на то, что это за объект или как к нему осуществляется доступ (программы будут отвечать за обеспечение связи между собой), поэтому вероятные объекты будут массивами других объектов и т. Д.

Важным является ACL PER OBJECT для пользователей с различными разрешениями.Я также ожидаю такие вещи, как теги объектов и т. Д.

Различные поиски, которые я могу себе представить:

  • direct - пользователь запрашивает файл
  • list mine - какпользователь Что я могу видеть
  • список принадлежит - какие объекты я создал
  • список тегов - какие объекты помечены как 'appX', к которым я могу получить доступ.и неизбежно будет много других

Я включу вышеупомянутое, чтобы показать сценарий, который я рассматриваю.Хотя в настоящее время меня не волнует масштабируемость, мне нравится концепция без схемы NoSQL, чтобы приложения могли запрашивать данные объекта, о которых я не знаю, например./ user / obj / 1/2/3, где все, что я знаю, это то, что у пользователя есть obj.

Однако сценарий мне кажется очень реляционным.У пользователя есть obj, у obj есть разрешения, у пользователя есть права доступа, атрибуты и т. Д. И я почти уверен, что смогу построить его в базе данных RDMS с большим количеством сериализованных объектов и хранилищ данных json, но, похоже, это основной проект NoSQL (и яЯ много слышал и хотел бы попробовать).

Итак, вопросы:

  • Это работа для NoSQL?
  • Как мне эффективносоздавать такие связи между объектами (подумал mongodb) и вообще есть ли какие-либо документы / учебные пособия о том, как моделировать данные в NoSQL для обработки таких вещей без чрезмерного поиска (надеюсь, с точки зрения RDMS).Из того, что я читал, я не вижу способа хранения таких данных, который может легко разрешить описанные выше случаи, по существу не возвращаясь к реляционной системе.
  • В случае компрометации RDMS / key-val, когда в RDMS обрабатываются ядро ​​auth и привилегии, дающие ключ к ключу / val для поиска объекта (не уверен, как подобъект / пользователь / obj /1/2 разрешения будет работать здесь).Должен ли это быть ответом?:)
  • Любой другой общий совет приветствуется.Рекламируемый сценарий использования Facebook должен отвечать на такие вопросы о взаимоотношениях, поэтому я уверен, что NoSQL сможет это сделать - я просто пока не знаю, как он может сделать это лучше.

Спасибо за большой вопрос.

Ответы [ 2 ]

2 голосов
/ 16 декабря 2010

NOSQL : огромное количество пользователей, важна скорость, на самом деле не важна целостность данных (это бонус, если это произойдет)

SQL (RDBMS): все остальное.

0 голосов
/ 16 декабря 2010

Прежде всего, я не могу ответить на весь ваш вопрос, но из моего понимания:

Если это размер ваших поисков:

direct - user asks for file
list mine - as a user what can i see
list owned - what objects have i created
list tagged - what objects are tagged with 'appX' that i can access. and there will inevitably be many others

Mongodb в порядке. Если вам по какой-либо причине необходимо перейти от файла к пользователю, то вы хотите использовать SQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...