Все,лучше дб для хранения файлов
Мне нужно хранить большое количество файлов (несколько миллионов) в базе данных, и я не уверен, какие технологии или базы данных использования. Моя первая идея - использовать mongodb или no sql dB.
Благодаря
Все,лучше дб для хранения файлов
Мне нужно хранить большое количество файлов (несколько миллионов) в базе данных, и я не уверен, какие технологии или базы данных использования. Моя первая идея - использовать mongodb или no sql dB.
Благодаря
Мне нужно хранить большое количество файлов (несколько миллионов) в базе данных
Что это значит? Что именно вы храните в базе данных (так что такое file для вас)? На что operating system? Для чего file system?
(я неявно имею в виду какой-то Linux или Unix-подобных ОС, потому что они являются настолько общими для Интернета и веб-серверов, помните, что UNIX файлы на самом деле i-nodes и directories ассоциируют имена в I-узлы, и файл может есть несколько путей файлов)
пути к файлам, они являются просто строками (разумной длиной, довольно часто самым большим несколько килобайта) с некоторыми ограничениями; BTW вы можете «нормализовать» путь (например, с помощью realpath(3)), прежде чем хранить его в БД.
содержание файла, они просто «blobs», то есть потенциально большие, но произвольные последовательности байтов. Здесь у вас возникла проблема размещения разбросанных по размеру блоков в БД; файл может иметь гигабайты - или даже терабайты - контента, а blob обычно этого не делает. Большинство систем БД полностью обрабатывают капли (например, сохраняют его в ОЗУ). Можете ли вы предоставить ограничение (например, несколько мегабайт) размера вашего файла?
метаданные файлов (например, время изменения, разрешение, право собственности), как правило, также весьма мала (это может быть, например, представлено несколько коротких столбцов в некоторых SQL таблицы)
Тогда что же они будут файлы означают? Возможно, вы хотите закодировать какое-либо приложение, которое использует базу данных для хранения и обеспечивает файловую абстракцию ОС. Затем подумайте о файловых системах в пользовательском пространстве (FUSE)
BTW, файл существует независимо от вашей БД (поскольку файлы являются абстракцией, предоставляемой вашей ОС). Он может быть и часто создается, считывается, записывается или удаляется некоторыми за пределами программ. В Linux рассмотрите inotify(7) объекты, которые будут уведомлены о событиях файловой системы (для местных обычной файловой системы, такой как ext4).
Обратите внимание, что в настоящее время большинство БД (и СУБД, таких как PostGreSQL или MySQL и не SQL-СУБД, такие как MongoDB) хранят свои данные в файлах (то есть, используя разделы raw disk для хранения БД, мода).
Поскольку многие СУБД устанавливают некоторые ограничения на содержимое (например, blob может быть ограничен несколькими десятками килобайт, в строке в некоторой таблице некоторых СУБД), обычно делается противоположное тому, что ваш (непонятный) вопрос предлагает. Типичным примером является сохранение изображений в базе данных. Часто вы отделяете небольшие изображения (например, менее 8 Кбайт) и сохраняете их непосредственно как blob в некоторой таблице (помните, что крошечные файлы из нескольких байтов имеют некоторые большие накладные расходы в большинстве файловых систем, например.на моем компьютере с ext4 файл занимает не менее килобайта дискового пространства) и более крупные изображения: тогда вы будете хранить их в файловой системе (некоторый путь к файлу, такой как 0123/4567/89ab.jpeg
) и сохранить путь к файлу в каком-то столбце. YMMV.
Если вы хотите сделать некоторые запросы или выполнить поиск по ключевым словам в содержимом файла, я порекомендую вам ElasticSearch, также вы можете использовать Apache Solr.
Если вам нужно что-то более конкретное, мне понадобится дополнительная информация
Большие файлы? Доступна сеть? Есть ли какие-либо обновления (или просто вставки/удаления)? – Thilo
Около 2 до 10 мб, без обновлений, но он должен быть доступен двум различным приложениям в python – Felquir
Я считаю, что вопрос должен быть улучшен, поэтому OP должен ** отредактировать вопрос **, чтобы объяснить его и дать конкретные мотивы и фактический контекст (поэтому добавьте в него несколько абзацев). С другой стороны, такой старый вопрос без ответа (до сих пор), вероятно, бесполезен –