Лучшие практики для хранения больших объемов XML вводят данных в SQL Server

Да, просто сделайте это:

class Example(models.Model):
  parent_example = models.ForeignKey('self')
5
задан Keith Adler 24 September 2009 в 23:22
поделиться

5 ответов

Еще одно голосование за использование вне базы данных.

В прошлом я использовал подход, аналогичный тому, что рекомендует Джеймс, но SQL Server 2008 поддерживает новую опцию хранения FILESTREAM, которая может хранить столбцы varbinary (max) вне базы данных в NTFS, и, возможно, стоит изучить их.

Электронная документация по SQL содержит много полезной информации, начиная с «FILESTREAM Overview».

3
ответ дан 13 December 2019 в 05:38
поделиться

В Python есть фантастический пакет под названием itertools .

Но прежде чем я перейду к этому, он хорошо послужит для объяснения того, как протокол итераций реализован в Python. Если вы хотите обеспечить итерацию по вашему контейнеру, вы указываете метод класса __ iter __ () , который предоставляет тип итератора . "Понимание оператора for Python в Python" - хорошая статья, в которой рассказывается, как на самом деле работает оператор for-in в Python, и дается хороший обзор того, как работают типы итераторов.

Взгляните на следующее:

>>> sequence = [1, 2, 3, 4, 5]
>>> iterator = sequence.__iter__()
>>> iterator.next()
1
>>> iterator.next()
2
>>> for number in iterator:
    print number 
3
4
5

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

2
ответ дан 13 December 2019 в 05:38
поделиться

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

Я предпочитаю хранить большие файлы вне базы данных, поскольку она, IMO, на самом деле не предназначена для их хранения. Если вы собираетесь выполнять поиск, вы можете использовать DLINQ и XLINQ для облегчения поиска в различных файлах xml.

1
ответ дан 13 December 2019 в 05:38
поделиться

Хранить метаданные!

За пределами базы данных мы также храним большие наборы данных, за исключением того, что я настоятельно рекомендую добавить некоторую метаинформацию в файл, чтобы на случай, если файлы выйдут синхронизации с БД, вы сможете полуавтоматически повторно синхронизировать его. Таким образом, вы можете сначала создать или обновить файл, а затем обновить базу данных, и не беспокоиться о том, что обновление базы данных выйдет из строя.

Управление большим количеством файлов Большинство файловых систем нормально могут хранить большое количество файлов вместе, но со временем они начинают работать немного медленно. Настоятельно рекомендую создавать подпапки на основе некоторого хэш-значения. Например, если все имена файлов являются целыми числами, хранить 10000 файлов в каждом каталоге и вычислять имя каталога как (filename% 10000) * 10000 - таким образом вы сможете легче найти файл при отладке.

1
ответ дан 13 December 2019 в 05:38
поделиться

Я вижу, что большинство ответов пока не для базы данных.

Мы сделали это один раз, добавив файл в файловую систему и имя файла в таблице в базе данных. Основные проблемы с этим заключались в следующем:

  • файловая система не является транзакционной, поэтому она может рассинхронизироваться, если что-то пойдет не так.
  • вам придется делать резервную копию отдельно, и восстановление по определению будет не синхронизировано

Для всех новых проектов мы храним файлы в полях varbinary (max). Это хорошо сработало для нас, в том числе при десятках тысяч пользователей.

5
ответ дан 13 December 2019 в 05:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: