В настоящее время мигрирует с SQL Server на PostgreSQL и пытается улучшить пару ключевых областей:
У меня есть таблица статей:
CREATE TABLE [dbo].[Articles](
[server_ref] [int] NOT NULL,
[article_ref] [int] NOT NULL,
[article_title] [varchar](400) NOT NULL,
[category_ref] [int] NOT NULL,
[size] [bigint] NOT NULL
)
Данные (текстовые файлы с разделителями-запятыми) ежедневно выгружаются на сервер импорта ~ 500 (из ~ 1000) серверов ежедневно.
Импорт:
- Индексы в таблице статей отключены.
- Для каждого сброшенного текстового файла
- Данные скопированы во временную таблицу.
- Временная таблица обновлена.
- Старые данные для сервера удаляются из таблицы «Статьи».
- Данные временной таблицы копируются в таблицу статей.
- Временная таблица отброшена.
После завершения этого процесса для всех серверов создаются индексы и новая база данных копируется на веб-сервер.
Я довольно доволен этим процессом, но всегда есть возможности для совершенствования, так как я стремлюсь к системе реального времени (хаха!). Что я делаю правильно? Таблица Статей содержит ~ 500 миллионов записей и, как ожидается, будет расти. Поиск по этой таблице в порядке, но может быть лучше. то есть SELECT * FROM Articles WHERE server_ref=33 AND article_title LIKE '%criteria%'
было удовлетворительным, но я хочу улучшить скорость поиска. Очевидно, что «как» моя проблема здесь. Предложения? SELECT * FROM Articles WHERE article_title LIKE '%criteria%'
ужасно.
Секционирование - это особенность SQL Server Enterprise, но $$$, которая является одной из многих интересных перспектив PostgreSQL. Какое снижение производительности произойдет для процесса импорта (удаление данных, вставка данных) и построения индексов? Вырастет ли база данных на огромную сумму?
База данных в настоящее время составляет 200 ГБ и будет расти. Копирование этого по сети не идеально, но это работает. Я вкладываю мысли в изменение структуры оборудования системы. Мысленный процесс наличия сервера импорта и веб-сервера таков, что сервер импорта может выполнять грязную работу (без индексов), в то время как веб-сервер (с индексами) может представлять отчеты. Возможно, сокращение системы до одного сервера поможет пропустить копирование через сетевой этап. Этот один сервер будет иметь две версии базы данных: одну с индексами для доставки отчетов, а другую без импорта новых данных. Базы данных будут меняться ежедневно. Мысли?
Это фантастическая система, и, поверьте или нет, есть какое-то средство для моего безумия, которое сильно встряхнуло.
ОБНОВЛЕНИЕ: Я не ищу помощи по реляционным базам данных, но надеюсь обмениваться идеями с экспертами хранилищ данных.