Я строю распределенную систему учета.
С точки зрения структуры и требований к БД, вероятно, проще всего описать приложение как приложение в стиле Twitter, но с иерархической структурой БД из 14 таблиц.
Компания, которая использует приложение, может иметь 1 и более пользователей, которые все делятся информацией о компании.
В настоящее время каждый объект представляет тип записи, т.е. клиенты, счета и т. Д.
У всех сущностей есть родитель, который является пользователем приложения. (по причинам согласованности запросов HRD)
Каждый запрос к БД состоит из 14 запросов AppEngine. По одному на каждый стол.
Запрос включает фильтрацию свойств.
Новое требование заключается в том, что для запроса пользователя могут потребоваться разные значения свойств на основе каждого из других пользователей.
Это означает, что нам нужно (в 14 раз больше пользователей) запросов AppEngine. Это кажется слишком много.
Запросы Kindless Ancestor, которые могут фильтровать по свойствам, были бы действительно хороши, увы, нет, ничего не могу сделать:)
Мои варианты:
Установить вид сущности для пользователя. Нет родителей. Это означает, что все типы записей являются смешанными. (Отфильтрованные поля существуют во всех типах записей).
Это не красиво. Но вы считаете это?
Иметь фиксированный вид объекта и выполнять запрос только по фильтру. Результат эквивалентен запросам Kindless Ancestor. Тем не менее, я боюсь, что это будет медленным при многопользовательском использовании.
Некоторые номера:
Мы планируем создать 10 000 компаний, в среднем по 5 пользователей на компанию и от 1 до 5 миллионов записей на тип записи. (всего 14 x)
Спасибо за ваше терпение до сих пор ..:)