Я собираюсь хранить истории в полях nvarchar (MAX) на SQL Server, но я знаю, что истории будут намного длиннее, чем позволяет MAX, и какой подход я должен принять? Должен ли я разделить историю на несколько строк или мне нужно пропустить использование базы данных и использовать текстовые файлы?Сохранение истории в SQL Server 2008?
ответ
Я считаю, что путаница проистекает из непонимания терминов здесь.
nvarchar(n)
- это тип данных, в которых n
может быть номером 1-4000. Число n
в этом случае имеет максимум 4000, что составляет до 8000 байт (2 байта на символ).
nvarchar(MAX)
другой тип данных в целом - ключевое слово MAX
является буквальным, и это не синоним для любого потенциального значения n
в моем примере выше. Поля этого типа имеют максимальную длину 2^31-1 символов или более 1 миллиарда, что составляет более 2 миллиардов байт (2 байта на символ).
Те же принципы применимы к varchar(n)
и varchar(MAX)
, за исключением каждого символа может быть только 1 байт, и в этом случае количество символов, которые могут быть сохранены в два раза. Является ли это всего 1 байт, зависит от сортировки, так как Martin Smith отмечает в комментарии!
Благодарим вас за понимание моего замешательства. – Xaisoft
+1 хорошее резюме – RedFilter
@Xaisoft Вы очень желанны. Было странно, что они выбрали эту схему именования для этого типа данных, поскольку она функционально больше связана с устаревшим «NTEXT», чем с «nvarchar (n)». И использование ключевого слова 'MAX', по-видимому, приведет к тому, что люди верят, что« MAX »означает синоним * просто используйте максимальное числовое значение здесь * –
Я бы предположил, что посмотрю на document oriented databases для чего-то подобного.
-1. Всегда приятно переключать технологии jsut, потому что вы даже не знаете, что может сделать ваш текущий. Я не сомневаюсь, что это хорошо или плохо, но плакат просто спрашивает, потому что он имеет дезинформацию и считает, что технический предел - 8000 символов (чего никогда не было). – TomTom
Это хорошо и хорошо (и я большой сторонник NoSQL), но если он уже находится на SQL Server, то, вероятно, путь varchar (max) - это, по мнению других,. –
@TomTom Этот ответ не заслуживает -1. ОП поставил свою проблему, Муз предложил одно возможное решение. Это не плохое решение (особенно учитывая, что оно было опубликовано до того, как стало очевидно, что ОП был дезинформирован). Не используйте его только потому, что это не решение, которое вы бы выбрали. – ean5533
Хранить их в главах.
Это не технический - это почти невозможно иметь Astory 1 млрд NVARCHAR символов (и NVARCHAR (макс) является «новый» тип TEXT данные
но загрузка и обработка их будет болезненные.. ..
хранить их в качестве глав и сохранить начало/конец номер страницы для каждой главы, когда это имеет смысл, так что вы можете перемещаться немного легче
Btw, вы вывесили вы думали, что 800 символов - это было НИКОГДА не делайте этого случая. Предел будет 8000 байт - если он будет применяться - и это будет 4000 символов unicode.
+1, потому что это может быть отличным дополнительным советом для этого использования, если рассказы представляют собой рассказы с несколькими разделами. –
Если они не будут, они не будут ВЕЧНО большими в любом случае;) – TomTom
Связанная с Тангентом информация: Согласно [wikipedia] (http://en.wikipedia.org/wiki/List_of_longest_novels), самый длинный, однотомный роман, написанный на английском языке является «Плохой член моей страны», на 850 000 слов. И согласно [этому документу] (http://www.puchu.net/doc/Average_Word_Length), средняя длина слова на английском языке составляет 5,10 –
Хорошо, вы могли бы попробовать сохранить как LONGTEXT (Mysql) или TEXT (MSSQL) (если вы хотите хранить объекты, я думаю, вы можете использовать BLOB) тип данных?
Это был помечен 'sql-server', поэтому' LONGTEXT' не применяется. 'TEXT' устарел с SQL 2005.' nvarchar (MAX) '- правильный тип данных для использования. –
Хотя я никогда не использую BLOB ...Если я храню изображения, я храню их на сервере и ссылаюсь на них в БД, так как это экономит пространство в БД. –
-1. Текст обесценивается, и nvarcahr (max) теперь должен использоваться. Фактически, текст является псевдонимом этого. – TomTom
- 1. Сохранение истории изменений в поле XML в SQL Server 2008
- 2. Сохранение многопользовательского поля в SQL Server 2008
- 3. Сохранение изображения на SQL Server 2008?
- 4. Способы ведения истории данных в базе данных SQL Server 2008
- 5. Сохранение истории в инфраструктуре Entity Framework/Sql Server
- 6. Сохранение истории с помощью StoredProcedure в SQL Server
- 7. Таблицы истории в SQL Server
- 8. Sql Server Change Data Capture: Сохранение истории при добавлении столбцов?
- 9. сохранение паролей в SQL Server
- 10. Сохранение изображения в SQL Server 2008 проблема с базой данных?
- 11. SQL Server 2008: сохранение даты в поле nvarchar
- 12. Сохранение статистики мультиплексированных типов данных в SQL Server 2008
- 13. SQL Server 2008 - Хранение файлов
- 14. Изменение структуры таблиц в SQl Server 2008
- 15. SQL Server 2008
- 16. Архивирование SQL Server 2008
- 17. SQL Server 2008 - Looping
- 18. Фильтрация SQL Server 2008
- 19. Запрос SQL Server 2008
- 20. Getdate() sql server 2008
- 21. Отладчик SQL Server 2008
- 22. Сравнение SQL Server 2008
- 23. SQL Server 2008 Работа
- 24. SQL Server 2008 sp1
- 25. SQL Server 2008 R2:
- 26. SQL SERVER 2008 SSIS
- 27. Отчеты SQL Server 2008
- 28. Агрегация SQL Server 2008
- 29. Вопрос SQL Server 2008
- 30. Отладка SQL Server 2008
Я искренне сомневаюсь, что истории длиннее, чем позволяет 'nvarchar (max)'. Это 1 миллиард символов. У войны и мира всего 560 000 слов. –
Cue Dr. Evil шутит здесь. –
@MartinSmith, я немного смущен, я думал, что max допускает только 8000 символов. – Xaisoft