Я задаю этот вопрос из-за вашей просьбы от здесь .
Когда вы дублируете данные, нужно помнить одну вещь. Точно так же, как вы добавляете данные, вы должны поддерживать их. Другими словами, если вы хотите обновить / обнаружить объект, вы должны делать это в каждом месте, где он существует.
Какие шаблоны (если таковые имеются) обычно используются для отслеживания дублированных данных, чтобы их можно было корректно обновлять во избежание противоречивых данных?
blockquote>Чтобы отслеживать все операции что нам нужно сделать, чтобы иметь согласованные данные, мы добавляем все операции в пакет. Вы можете добавить одну или несколько операций обновления для разных ссылок, а также удалить или добавить . Об этом см.:
Как насчет создания реляционной таблицы для каждого уникальное местоположение, в котором могут существовать данные, которое используется для восстановления путей, требующих обновления.
blockquote>По моему мнению, нет необходимости добавлять дополнительную «реляционную таблицу», но если вы чувствуете себя комфортно с ней, продолжайте и используйте ее.
Затем вы используете их для восстановления путей дублированных данных для поста (например,
blockquote>/users/[boardOwnerID]/boards/[boardID]/posts/[postID]
)?Да, вам нужно перейти к каждому
document()
метод, соответствующий идентификатор документа, чтобы заставить операцию обновления работать. К сожалению, нет подстановочных знаков в путях Cloud Firestore к документам. Вы должны идентифицировать документы по их идентификаторам.В качестве альтернативы, вы могли бы вместо этого использовать posts_denormalization_tracker, который представляет собой просто набор уникальных идентификаторов postID, который включает в себя подколлекцию местоположений, на которые был дублирован пост? это также не является необходимым, поскольку требует дополнительных операций чтения. Поскольку в Firestore все касается количества операций чтения и записи, я думаю, вам следует еще раз подумать об этом подходе. Пожалуйста, смотрите Firestore использование и ограничения .
, если только правила безопасности Firestore не являются достаточно мощными, чтобы разрешить операции добавления для подколлекции / posts_denormalization_tracker / [postID] / location, не разрешая чтение или обновление подсборки или родительской коллекции postIDs.
blockquote>Правила безопасности Firestore настолько мощны, чтобы сделать это. Вы также можете разрешить читать, писать или даже применять правила безопасности в отношении каждой необходимой вам операции CRUD.
Я в основном ищу разумный способ отследить сильно денормализованные данные.
blockquote>Самый простой способ, который я могу придумать, - это добавить операцию в структуру данных типа ключ и значение. Давайте предположим, что у нас есть карта, которая выглядит следующим образом:
Map
Итерация по карте и добавление всех этих ключей и значений в пакет, фиксация пакета и все.
Что-то как:
Date lm = new Date(lastmodified);
String lasmod = new SimpleDateFormat("yyyy-MM-dd").format(lm);
Посмотрите javadoc для SimpleDateFormat.
final Date modDate = new Date(lastmodified);
final SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd");
final String lasmod = f.format(modDate);
String lasmod = new SimpleDateFormat("yyyy-MM-dd").format(new Date(lastmodified));
Ищите корректный шаблон, который Вы хотите для SimpleDateFormat... Я, возможно, включал неправильный из памяти.
Date d = new Date(lastmodified);
DateFormat form = new SimpleDateFormat("yyyy-MM-dd");
String lasmod = form.format(d);
Попытка:
import java.text.SimpleDateFormat;
import java.util.Date;
long lastmodified = file.lastModified();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
String lastmod = format.format(new Date(lastmodified));