Как поменять БД MySQL в CMS LiveStreet на MongoDB

Внимание, все действия по данной инструкции вы делаете на свой страх и риск. Помните, что при переходе на другую базу данных вам может потребоваться изменить некоторые части кода LiveStreet, чтобы они соответствовали новому типу базы данных. По умолчанию разработчиками LiveStreet не приветствуется подобное ковыряние кода, пост создан для информации. Автор не несет ответственности за возможные последствия.

Для того чтобы перевести базу данных LiveStreet с MySQL на MongoDB, необходимо выполнить следующие шаги:

1. Установите MongoDB на ваш сервер. Вы можете скачать его с официального сайта MongoDB.

2. Создайте новую базу данных в MongoDB. Используйте командную строку для этого:
mongo --eval 'db.createCollection("livesession")'

Это создаст коллекцию «livesession» в вашей базе данных.

3. Откройте файл «config/config.php» в редакторе кода.

4. Найдите секцию, где настроена база данных MySQL, и измените её на подключение к MongoDB:
// Старые настройки базы данных MySQL
// $config['db']['type'] = 'mysql';
// $config['db']['host'] = 'localhost';
// $config['db']['user'] = 'username';
// $config['db']['password'] = 'password';
// $config['db']['database'] = 'livesstreet_db';

// Новые настройки для MongoDB
$config['db']['type'] = 'mongodb';
$config['db']['host'] = 'localhost';
$config['db']['port'] = 27017; // Порт по умолчанию для MongoDB
$config['db']['options'] = array('replicaSet' => 'rs'); // Опционально, если используется репликация

// Параметры подключения к MongoDB
$config['db']['connectionString'] = 'mongodb://localhost:27017/livesession';

5. Сохраните изменения в файле «config.php».

6. Очистите текущую базу данных LiveStreet, если она уже была создана. Это можно сделать через phpMyAdmin или используя SQL-команды.

7. Запустите LiveStreet с новыми настройками базы данных. Если всё прошло успешно, вы должны увидеть сообщение об успешном подключении к MongoDB.

Также вам потребуется переделать все таблицы из БД под MongoDB.

Разберем все на примере таблицы «sl_comment» из дампа.

Оригинал из MySQL:
--
-- Структура таблицы `sl_comment`
--

CREATE TABLE `sl_comment` (
  `comment_id` int(10) UNSIGNED NOT NULL,
  `comment_pid` int(10) UNSIGNED DEFAULT NULL,
  `comment_left` int(11) NOT NULL DEFAULT 0,
  `comment_right` int(11) NOT NULL DEFAULT 0,
  `comment_level` int(11) NOT NULL DEFAULT 0,
  `target_id` int(10) UNSIGNED DEFAULT NULL,
  `target_type` varchar(50) NOT NULL DEFAULT 'topic',
  `target_parent_id` int(11) NOT NULL DEFAULT 0,
  `user_id` int(10) UNSIGNED NOT NULL,
  `comment_text` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
  `comment_text_source` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
  `comment_text_hash` varchar(32) NOT NULL,
  `comment_date` datetime NOT NULL,
  `comment_date_edit` datetime DEFAULT NULL,
  `comment_user_ip` varchar(40) NOT NULL,
  `comment_rating` float(9,3) NOT NULL DEFAULT 0.000,
  `comment_count_vote` int(10) UNSIGNED NOT NULL DEFAULT 0,
  `comment_count_favourite` int(10) UNSIGNED NOT NULL DEFAULT 0,
  `comment_count_edit` int(11) NOT NULL DEFAULT 0,
  `comment_delete` tinyint(4) NOT NULL DEFAULT 0,
  `comment_publish` tinyint(1) NOT NULL DEFAULT 1
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;

В MongoDB структура данных для представления таблицы «sl_comment» может выглядеть следующим образом:
{
  "_id": ObjectId("5a931ca6c4b7e6a77d8b6765"), // уникальный идентификатор записи
  "comment_id": 1,
  "comment_pid": null,
  "comment_left": 0,
  "comment_right": 0,
  "comment_level": 0,
  "target_id": null,
  "target_type": "topic",
  "target_parent_id": 0,
  "user_id": 1,
  "comment_text": "Текст комментария",
  "comment_text_source": "Источник комментария",
  "comment_text_hash": "abcdefgh",
  "comment_date": ISODate("2018-02-03T10:00:00Z"),
  "comment_date_edit": null,
  "comment_user_ip": "127.0.0.1",
  "comment_rating": 0.000,
  "comment_count_vote": 0,
  "comment_count_favourite": 0,
  "comment_count_edit": 0,
  "comment_delete": 0,
  "comment_publish": true
}

Обратите внимание, что "_id" теперь является уникальным идентификатором документа, который генерируется автоматически в MongoDB. Поля, которые были первичными ключами в MySQL («comment_id», «comment_pid»), могут быть использованы в качестве индексов для ускорения поиска. Поле «comment_date» преобразовано в дату формата ISODate.

Также стоит отметить, что в MongoDB нет понятия таблиц, вместо этого используются коллекции документов. Каждый документ в коллекции представляет собой запись, аналогичную строке в таблице реляционной базы данных.

8. Проверьте, что все данные корректно отображаются в новой базе данных MongoDB.

9. После проверки всех данных вы можете удалить старую базу данных MySQL, если она больше не нужна.
Поделиться:

Похожие публикации

Тут ничего нет

Нет комментариев