У меня есть прототип сервера [0], который делает os.walk()
[1] для каждого запроса, который делает клиент [0].os.walk() кеширование/ускорение
Я в настоящее время изучает способы:
- кэширования этой информации в памяти,
- ускорения запросов, и
- , мы надеемся, что позволяет для расширения в хранения метаданных и сохранение данных в дальнейшем.
Я нахожу SQL complicated для древовидных структур, поэтому я думал, я хотел бы получить несколько советов, прежде чем на самом деле передаванием SQLite
Есть ли кросс-платформенный, встраиваемый или ножки пучка в состоянии базы данных не-SQL, которые могут быть способный обрабатывать данные такого рода?
- У меня есть небольшой (10k-100k файлов) список.
- У меня очень небольшое количество соединений (возможно, 10-20).
- Я хочу иметь возможность масштабирования для обработки метаданных.
[0] сервер и клиент на самом деле тот же кусок программного обеспечения, это P2P приложения, который предназначен для обмена файлами по локальной доверенной сети с вне основного сервера, используя zeroconf
для обнаружения и витой для почти все остальное
[1] время запроса в настоящее время 1.2S с os.walk()
на 10000 файлов
Вот соответствующая функция в моем коде Python, что делает ходьбу:
def populate(self, string):
for name, sharedir in self.sharedirs.items():
for root, dirs, files, in os.walk(sharedir):
for dir in dirs:
if fnmatch.fnmatch(dir, string):
yield os.path.join(name, *os.path.join(root, dir)[len(sharedir):].split("/"))
for file in files:
if fnmatch.fnmatch(file, string):
yield os.path.join(name, *os.path.join(root, ile)[len(sharedir):].split("/"))
У вас есть небольшое количество похожих запросов от разных клиентов или у вас есть много вариантов? В первом случае может иметь смысл просто кэшировать ответ для каждого запроса. – data
И в случае, если вы не знаете об этом: существует реализация libfam для python, позволяющая кэшировать структуру, не рискуя ее устаревать – data
спасибо данные Я обновил свое сообщение, чтобы отразить ваш вопрос (очень небольшое количество подключений, возможно, 10-20), и я посмотрю на libfam, а также спасибо –