Rodegast
Авг. 24, 2015 14:44:14
Выбирать БД нужно исходя из задачи и структуры данных, а не по принципу “мне SQL нравится”. ТС опиши свою задачу (что ты в базе хранить собираешься, какая будет нагрузка и т.п.)
AngelFrei
Авг. 24, 2015 14:58:43
Rodegast
Добрый день. В БД будут храниться экземпляры классов в виде словарей, то есть каждый объект будет являться ключом и иметь в себе порядка 30-40 ключей с их значениями в виде строк и чисел. Таких записей должно быть в районе 200 000, для ускорения работы решил разбить один файл на множество, используя сортировку по первым двум буквам наименований, так как открытие одной такой БД через shelve происходило очень долго, а для выполнения кода нужны лишь 2 записи.
Надеюсь, понятно выразился?
Shaman
Авг. 24, 2015 15:05:39
Для сомневающихся, на примере постгрес.
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!"
А иначе на всех трёхзвенок не напасёшься.
4kpt_III
Авг. 24, 2015 15:19:12
AngelFreiAngelFrei
Добрый день. В БД будут храниться экземпляры классов в виде словарей, то есть каждый объект будет являться ключом и иметь в себе порядка 30-40 ключей с их значениями в виде строк и чисел.
Атрибуты фиксированные?
AngelFrei
Авг. 24, 2015 15:22:17
4kpt_III
Ключи фиксированные, а большинство их значений будут меняться
Rodegast
Авг. 24, 2015 15:30:27
Тогда используй kv хранилища вроде редиса и сериализацию в json. Из встраиваемых Tokyo Cabinet неплохой, но сейчас он скорее мёртв чем жив.
> Ключи фиксированные, а большинство их значений будут меняться
Тогда ORM тоже можно попробовать.
4kpt_III
Авг. 24, 2015 15:55:54
redis можно, но при росте количества записей может начать жрать память + есть вероятность того, что он помрет и данные будут потеряны. По скорости это самый высокоскоростной вариант. redis висит в памяти и дает возможность реализовать до 100000 запросов в секунду. Таки да, вариант хороший.
P.S. Можно воспользоваться транзакциями, хоть нужно проверять, будут ли они полноценно действовать при убийстве редиса и не приведет ли это к частичной потере данных.
AngelFrei
Сколько занимает файл shelve?
AngelFrei
Авг. 24, 2015 16:37:40
4kpt_III
около 300мб
4kpt_III
Авг. 24, 2015 16:59:14
Если сильный рост количества записей не предполагается, то пробуйте redis.
Общая документация
Маленькая книга по редисДля питона
redis-pyЕсли предполагается, то тогда алхимия все же лучше.