В базе данных памяти доступны из нескольких скриптов Python? - PullRequest
0 голосов
/ 15 июля 2011

Я ищу быструю, базу данных в памяти , которая позволяет определять, инициализировать и манипулировать large matrix числами с плавающей запятой (размером приблизительно 10,000,000 x 10).

Эта база данных в памяти должна соответствовать следующим требованиям:

(1) быть открытым исходным кодом и проста в настройке в Linux environment

(2) имеет существующий, простой в использовании python модуль, позволяющий взаимодействовать с ним

(3) быть полностью в памяти и индексируемым (без запросов / sql)

(4) разрешить доступ к нескольким различным python сценариям (запущенным одновременно ...)та же матрица и чтение из нее / обновление ( примечание: обновления должны быть атомарные - поэтому БД должна знать, как обрабатывать параллелизм) *


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

Я пытаюсь заставить их всех использовать same output matrix до обновить свои результаты (я хочу, чтобы все их результаты были сохранены в ОДНОЙ БОЛЬШОЙ МАТРИЦЕ).

Следовательно, мне нужно решение, которое позволит им всем читать из и обновлять * в той же матрице *.

В идеале, обновления будут выполняться с использованием следующей строки кода:

myMatrix[a][b] = 23.44

Как видите, sql - это , не нужно , посколькукаждый сценарий python будет напрямую манипулировать матрицей.


Я готов рассмотреть любое решение , если оно соответствует вышеуказанным критериям.Любые предложения?

РЕДАКТИРОВАТЬ: Мне не обязательно использовать матрицу обязательно; ключ / значение DB также могут работать.

Ответы [ 2 ]

2 голосов
/ 15 июля 2011

Довольно другой подход , основанный на системе очередей сообщений . Вероятно, роли «Вентилятор» и «Раковина» будут объединены в одну для ваших целей, и, конечно, он будет работать только в том случае, если вентилятор сможет решить, какие данные необходимо отправить работникам, если вы не дополните их решением с общей памятью.

РЕДАКТИРОВАТЬ: шаблон остается действительным, но у python есть собственная система очередей на борту, которой может быть достаточно. Этот pdf может помочь вам начать работу.

1 голос
/ 16 июля 2011

Может быть Redis будет соответствовать вашим потребностям.Это быстрый в памяти ключ / значение БД.Он имеет тип List для хранения последовательности элементов, но реализован как связанный список, а не как массив.Таким образом, доступ к элементу по индексу в списке 10M может быть не таким быстрым.Но вы можете иметь 10M ключей, если ваша матрица имеет 10M x 10 элементов.Redis также поддерживает транзакции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...