Таблица базы данных Oracle для ведения журнала активности пользователя веб-приложения - PullRequest
0 голосов
/ 14 июня 2019

Я хочу вести полный журнал активности всех действий, выполненных пользователем из моего веб-приложения. Я сделал несколько таблиц, чтобы помочь мне сделать это, и натолкнулся на этот вопрос: Мне нужно хранить относительно длинный текст только в одном столбце. Является ли это хорошей практикой и использует, например, varchar2 (2000) , тоже хорошей практикой? У меня будет около одного-двух миллионов записей.

1 Ответ

2 голосов
/ 14 июня 2019

С одной стороны, что касается места для хранения в базе данных, это нормально.Поля VARCHAR2 занимают столько места, сколько требуется для фактических данных, поэтому, если у вас есть только 100 символов, в базе данных будет использоваться только пространство, необходимое для этих 100 символов.

С другой стороны, когда вы прочитайте данные из базы данных, у вас могут возникнуть проблемы.Поскольку программа, считывающая данные, не знает, сколько символов на самом деле хранится в каждой строке, она может выделить все 2000 символов пространства, чтобы при передаче данных из базы данных в память программы это пространство было доступно.Для двух миллионов записей, которые будут занимать около четырех гигабайт памяти, если все эти строки будут считаны в память одновременно.

Сжимая руку, у вас может не быть большого выбора.Если вам нужно хранить строки символов этой длины в столбце, сделайте столбец VARCHAR2(2000) (или 4000, или до 32 КБ в новых версиях Oracle).Просто знайте о потенциальных проблемах и не удивляйтесь, если возникнут проблемы с памятью.Помните, что аппаратные средства дешевы - время программиста дорого стоит.

(Кстати, мем «одна рука / другая рука / захватывающая рука» происходит из книги Ларри Найвена и Джерри Пурнелла «Мот в глазу богов»).Если вы фанат научной фантастики и не читали ее, вам следует: -).

...