Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 24, 2015 14:44:14

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2843
Репутация: +  186  -
Профиль   Отправить e-mail  

Работа с одной БД из двух программ

Выбирать БД нужно исходя из задачи и структуры данных, а не по принципу “мне SQL нравится”. ТС опиши свою задачу (что ты в базе хранить собираешься, какая будет нагрузка и т.п.)



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#2 Авг. 24, 2015 14:58:43

AngelFrei
Зарегистрирован: 2015-08-23
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа с одной БД из двух программ

Rodegast
Добрый день. В БД будут храниться экземпляры классов в виде словарей, то есть каждый объект будет являться ключом и иметь в себе порядка 30-40 ключей с их значениями в виде строк и чисел. Таких записей должно быть в районе 200 000, для ускорения работы решил разбить один файл на множество, используя сортировку по первым двум буквам наименований, так как открытие одной такой БД через shelve происходило очень долго, а для выполнения кода нужны лишь 2 записи.
Надеюсь, понятно выразился?

Отредактировано AngelFrei (Авг. 24, 2015 14:59:12)

Офлайн

#3 Авг. 24, 2015 15:05:39

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Работа с одной БД из двух программ

Для сомневающихся, на примере постгрес.

import psycopg2
 
try:
    conn1 = psycopg2.connect("dbname='test' user='user' host='localhost' password='user'")
    conn2 = psycopg2.connect("dbname='test' user='user' host='localhost' password='user'")
    conn3 = psycopg2.connect("dbname='test' user='anotherone' host='localhost' password='user'")
except:
    print "I am unable to connect to the database"
else:
    print "OK!"
>>> 
OK!
>>>
А иначе на всех трёхзвенок не напасёшься.

Офлайн

#4 Авг. 24, 2015 15:19:12

4kpt_III
Зарегистрирован: 2014-12-22
Сообщения: 999
Репутация: +  39  -
Профиль   Отправить e-mail  

Работа с одной БД из двух программ

AngelFrei

AngelFrei
Добрый день. В БД будут храниться экземпляры классов в виде словарей, то есть каждый объект будет являться ключом и иметь в себе порядка 30-40 ключей с их значениями в виде строк и чисел.

Атрибуты фиксированные?

Офлайн

#5 Авг. 24, 2015 15:22:17

AngelFrei
Зарегистрирован: 2015-08-23
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа с одной БД из двух программ

4kpt_III
Ключи фиксированные, а большинство их значений будут меняться

Офлайн

#6 Авг. 24, 2015 15:30:27

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2843
Репутация: +  186  -
Профиль   Отправить e-mail  

Работа с одной БД из двух программ

Тогда используй kv хранилища вроде редиса и сериализацию в json. Из встраиваемых Tokyo Cabinet неплохой, но сейчас он скорее мёртв чем жив.

> Ключи фиксированные, а большинство их значений будут меняться

Тогда ORM тоже можно попробовать.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#7 Авг. 24, 2015 15:55:54

4kpt_III
Зарегистрирован: 2014-12-22
Сообщения: 999
Репутация: +  39  -
Профиль   Отправить e-mail  

Работа с одной БД из двух программ

redis можно, но при росте количества записей может начать жрать память + есть вероятность того, что он помрет и данные будут потеряны. По скорости это самый высокоскоростной вариант. redis висит в памяти и дает возможность реализовать до 100000 запросов в секунду. Таки да, вариант хороший.

P.S. Можно воспользоваться транзакциями, хоть нужно проверять, будут ли они полноценно действовать при убийстве редиса и не приведет ли это к частичной потере данных.

AngelFrei
Сколько занимает файл shelve?

Отредактировано 4kpt_III (Авг. 24, 2015 15:56:33)

Офлайн

#8 Авг. 24, 2015 16:37:40

AngelFrei
Зарегистрирован: 2015-08-23
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа с одной БД из двух программ

4kpt_III
около 300мб

Офлайн

#9 Авг. 24, 2015 16:59:14

4kpt_III
Зарегистрирован: 2014-12-22
Сообщения: 999
Репутация: +  39  -
Профиль   Отправить e-mail  

Работа с одной БД из двух программ

Если сильный рост количества записей не предполагается, то пробуйте redis.

Общая документация
Маленькая книга по редис

Для питона
redis-py

Если предполагается, то тогда алхимия все же лучше.

Отредактировано 4kpt_III (Авг. 24, 2015 16:59:54)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version