Как мне работать со столбцами, относящимися к одному объекту и кеширующим с использованием одной и той же базы данных? - PullRequest
0 голосов
/ 05 мая 2020

Как сказано в заголовке, у меня есть 2 вопроса, первый из них - как я должен структурировать свои данные, допустим, у меня есть сущность гильдии, мне нужен только идентификатор гильдии, чтобы получить больше данных из API, я хочу, чтобы гильдия иметь несколько параметров, таких как префикс, язык и т. д. c, должен ли я создавать новый объект для каждого параметра, используя гильдию в качестве первичного ключа, или иметь один объект параметров, например

@Entity()
export class GuildSettings extends BaseEntity {
  @PrimaryColumn()
  guildId!: string;

  @Column()
  prefix!: string;

  @Column()
  language!: string

  @Column()
  updatedByUserId!: string;

  @UpdateDateColumn()
  updatedAt!: Date;
}

Мой второй вопрос: стоит ли делать кеширование в единой (Postgres) базе? Пожалуйста, просмотрите запросы ниже

query: SELECT * FROM "query-result-cache" "cache" WHERE "cache"."query" = $1 -- PARAMETERS: ["SELECT \"GuildSettings\".\"prefix\" AS \"GuildSettings_prefix\", \"GuildSettings\".\"guildId\" AS \"GuildSettings_guildId\" FROM \"guild_settings\" \"GuildSettings\" WHERE \"GuildSettings\".\"guildId\" IN ($1) -- PARAMETERS: [\"699180262981894235\"]"]
query: SELECT "GuildSettings"."prefix" AS "GuildSettings_prefix", "GuildSettings"."guildId" AS "GuildSettings_guildId" FROM "guild_settings" "GuildSettings" WHERE "GuildSettings"."guildId" IN ($1) -- PARAMETERS: ["699180262981894235"]
query: UPDATE "query-result-cache" SET "identifier" = $1, "query" = $2, "time" = $3, "duration" = $4, "result" = $5 WHERE "query" = $6 -- PARAMETERS: [null,"SELECT \"GuildSettings\".\"prefix\" AS \"GuildSettings_prefix\", \"GuildSettings\".\"guildId\" AS \"GuildSettings_guildId\" FROM \"guild_settings\" \"GuildSettings\" WHERE \"GuildSettings\".\"guildId\" IN ($1) -- PARAMETERS: [\"699180262981894235\"]",1588663024258,60000,"[]","SELECT \"GuildSettings\".\"prefix\" AS \"GuildSettings_prefix\", \"GuildSettings\".\"guildId\" AS \"GuildSettings_guildId\" FROM \"guild_settings\" \"GuildSettings\" WHERE \"GuildSettings\".\"guildId\" IN ($1) -- PARAMETERS: [\"699180262981894235\"]"]
query: SELECT * FROM "query-result-cache" "cache" WHERE "cache"."query" = $1 -- PARAMETERS: ["SELECT \"GuildSettings\".\"prefix\" AS \"GuildSettings_prefix\", \"GuildSettings\".\"guildId\" AS \"GuildSettings_guildId\" FROM \"guild_settings\" \"GuildSettings\" WHERE \"GuildSettings\".\"guildId\" IN ($1) -- PARAMETERS: [\"699180262981894235\"]"]

Или я должен извлечь часть кеширования во что-то вроде Redis?

...