2014-11-29 2 views
1

У меня есть столбец данных, который я хотел бы добавить в таблицу базы данных mysql. Столбец является сырым текстом, а самый длинный фрагмент текста содержит около 300 000 символов. Можно ли хранить это в таблице? Как?хранить текст длины символа ~ 300 000 в базе данных mysql

Я читал, что даже колонки LONGTEXT несколько ограничены.

+0

«как-то ограниченный» Вы посмотрели на максимальные размеры? Сначала Google, затем спросите. –

+0

'MEDUMTEXT' позволяет до 2^24 байта, что составляет около 16 МБ. 'LONGTEXT' позволяет 2^32, около 4 ГБ. – Barmar

+0

Удивительный! Благодаря! Просто нужно было выяснить, сколько бит было в этой строке – JoeDanger

ответ

3

Предположительно, вы исключили альтернативу хранения этих элементов текста в файлах и сохранили их пути в своей таблице. Если вы не учли этот выбор, сделайте это. Чаще всего это самый практичный способ обработки такого приложения. Это особенно верно, если вы используете веб-сервер для доставки вашей информации своим пользователям: путем помещения этих объектов в вашу файловую систему вы избегаете очень серьезного узкого места производства (извлечение объектов из СУБД, а затем отправка их пользователю).

LOB (большие объекты) MySQL будут без проблем загружать 300 тысяч символов. MEDIUMTEXT обрабатывает 16 мегабайт. Но работа по программированию, необходимая для загрузки этих объектов в СУБД и их повторного запуска, может быть немного сложной задачей. Вы не упомянули свой стек приложений, поэтому вам сложно дать вам конкретные советы по этому поводу. Когда начать? читайте о параметре сервера MySQL max_allowed_packet.

Если это был мой проект, и по какой-то причине использование файловой системы не могло быть и речи, я бы сохранил большие текстовые статьи в виде сегментов в более коротких строках. Например, вместо

textid  textval 
    (int)  (MEDIUMTEXT) 
number  lots and lots and lots of text. 

Я бы сделал таблицу, как это:

textid  segmentid  textval 
    (int)   (int)  (VARCHAR(250)) 
number   1  Lots and 
number   2  lots and 
number   3  lots of 
number   4  text. 

Длина сегмента, вероятно, следует быть около 250 символов каждая в длину. Я думаю, вы были бы умны, чтобы сломать сегменты на границах слов, если сможете; это облегчит поиск файлов, таких как FULLTEXT. Это приведет ко многим коротким строкам для ваших больших текстовых элементов, но это сделает ваше программирование, ваши резервные копии и все остальное о вашей системе. легче обрабатывать все вокруг.

Существует первоначальная стоимость, но, вероятно, стоит того.

+0

благодарит отличный ответ и отличные советы по хранению! Я буду экспериментировать с ними :) – JoeDanger

Смежные вопросы