Настройка для большого объема записи в базу данных - PullRequest
0 голосов
/ 28 сентября 2011

Я исследую проект, который потребует сотен записей в базу данных в минуту. Я никогда не имел дело с этим уровнем записи данных раньше, и я ищу хорошие масштабируемые методы и технологии.

Я удобный разработчик Python с опытом работы в django и sql alchemy. Я думаю, что я построю интерфейс данных на django, но я не думаю, что будет хорошей идеей пройти через orm, чтобы выполнить объем записи данных, который мне потребуется. Я определенно открыт для изучения новых технологий.

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

Любой совет, с чего начать?

Спасибо, CG

Ответы [ 3 ]

0 голосов
/ 28 сентября 2011

С SQLAlchemy у вас должно быть все в порядке с низкими сотнями операций записи в минуту (это всего лишь пара секунд);если вы говорите больше тысячи раз в минуту, да, это может быть проблематично.

Какие у вас данные?Если он довольно плоский (несколько таблиц, мало отношений), вы можете исследовать нереляционную базу данных, такую ​​как CouchDB или Mongo.Если вы хотите использовать SQL, я настоятельно рекомендую PostgreSQL, похоже, он имеет дело с большими базами данных и частыми операциями записи намного лучше, чем MySQL.

Это также зависит от того, насколько сложны данные, которые вы вставляете.

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

0 голосов
/ 28 сентября 2011

Если это всего лишь несколько сотен записей, вы все равно можете делать с реляционной БД. Я бы выбрал PostgreSQL (8.0+), который имеет отдельный фоновый процесс записи. Он также имеет настраиваемые уровни сериализации, так что вы может обеспечить некоторые компромиссы между скоростью и строгим соответствием ACID, некоторые даже на уровне транзакций.

Postgres хорошо документирован, но он предполагает более глубокое понимание SQL и теории реляционных БД, чтобы полностью понять и максимально использовать ее.

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

В любом случае, если вы используете python, и нет 100% критической потери записи при выключении или отключении питания, и вам нужна низкая задержка, используйте потокобезопасный Queue.Queue и рабочие потоки, чтобы отделить записи от вашего основного поток (ы) приложения.

0 голосов
/ 28 сентября 2011

Следуйте тенденциям, другими словами, войдите в мир NOSQL. Некоторые заслуживающие внимания технологии включают mongodb и redis . Они действительно быстрые, масштабируемые и с приличными драйверами python. Например, mongodb очень хорошо работает с django и имеет много общего с традиционным SQL, таким как MySQL. С другой стороны, Redis имеет более «примитивные» структуры данных, но превосходит по скорости (что, конечно, зависит от драйверов). Используя любой из них (или оба, это умная идея для чего-то великолепного), вы свободны (и иногда вынуждены) написать свою собственную «низкоуровневую» логику для удовлетворения ваших потребностей.

...