В каком случае будет лучшая производительность?

141
08 марта 2022, 08:10

Есть задача сделать перевод базы данных на 15 языков. В базе данных большой объем данных, наибольшая таблица весит около 4гб.

В каждой таблице table есть несколько полей text типа MEDIUMTEXT которые нужно перевести на 15 языков.

Как лучше организовать хранение переведенных 15ти языков? Создать в table ячейки en_text,fr_text и тд, либо же лучше на каждый из языков копировать таблицу типа en_table,fr_table ?

Answer 1

Возможный вариант.

  1. Шардим вертикально все таблицы, содержащие мультиязычные поля, и выносим такие поля в отдельные таблицы. Вяжем 1:1 (FK + UNIQUE).
  2. Для каждого языка создаём отдельную БД. Выносим таблицы с мультиязычными полями туда.
  3. В процессе работы текущей является БД с языковыми таблицами. Таблицы с числами/датами/english-only - в отдельной БД. Соответственно рефы на таблицы с языковыми данными идут без указания БД, а на общие - с указанием. Переключение языка - одной инструкцией типа USE ru_ru, ну и плюс рефреш всего языкозависимого.

Есссно смиряемся с фигнёй типа

SELECT main.table1_0.id, COALESCE(table1_1.text, en_us.table1_1.text)
READ ALSO
php накопить массив данными в цикле

php накопить массив данными в цикле

как в массив который в цикле записать данные по условию? Нужно в массив $array записать данные, которые НЕ равны 'good'

107
объединить один массивов php

объединить один массивов php

пробывал array_merge, implode и еще несколько вариантов но не смог

74
Php цикл for и операции

Php цикл for и операции

**всем привет, мне нужно создать циклические блоки через php, но при вот таком коде `

95