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