Для начала я новичок в концепции 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 сможет это сделать - я просто пока не знаю, как он может сделать это лучше.
Спасибо за большой вопрос.