2013-08-23 3 views
2

Я пытаюсь решить, используя базу данных Heroku Crane PostgreSQL ($ 50/month - https://postgres.heroku.com/pricing) или настройку Linode 1GB Ram/8 CPU/48GB Storage/2TB Transfer instance с установленным PostgreSQL ($ 20/month - https://www.linode.com/).Heroku PostgreSQL Crane DB vs Linode 1GB с установленным PostgreSQL

Я знаю, что с точки зрения управления использование Heroku Crane PostgreSQL было бы намного проще, так как все управлялось с учетом безопасности и резервных копий.

Что мне было интересно, так это сравнение производительности двух баз данных. С экземпляром процессора Linode 1GB/8 на нем будет использоваться только моя база данных. Я вижу с Heroku Crane, что он говорит, что он получает только 400 МБ оперативной памяти. Также непонятно с Heroku Crane, сколько процессорных я получаю и является ли это отдельным экземпляром.

Является ли Хероку DB более рационально управляет ОЗУ/кэшем БД? Его непонятно, будет ли экземпляр Linode PostgreSQL автоматически использовать доступную для него оперативную память 1 ГБ, или если для обеспечения загрузки БД в ОЗУ потребуется специальная настройка с моей стороны.

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

Спасибо за любую информацию, которую люди могут предоставить. Я новичок в управлении БД и использовал экземпляр Linode 1GB с PostgreSQL, установленным для разработки и тестирования, но теперь, когда я собираюсь на производство, я задаюсь вопросом, переходить ли к Heroku Crane. Кроме того, не уверен, если это имеет значение, но мой сервер размещен через веб-экземпляры Heroku.

ответ

2

Нижние планы Heroku находятся на общем сервере, разделенном на контейнеры с LXC. Подробности: on Heroku's site. Ваш план, кажется, один из них.

Это действительно может быть победа as discussed in this question, если вы оказались на экземпляре, где другие пользователи не загружают на сервер большую нагрузку. Это делает вашу работу менее предсказуемой.

Единственный хороший способ характеризовать производительность - это сопоставить с симуляцией рабочей нагрузки.

Независимо от того, действительно ли оперативная память или нет, зависит от ваших данных. Если ваши часто используемые данные и индексы соответствуют ОЗУ на одной машине, но не на другой, то разница в ОЗУ будет иметь огромное значение. Если данные помещаются в ОЗУ на обоих хостах, мало пользы для добавления ОЗУ. Если горячие данные не будут помещаться в ОЗУ на любом компьютере, тогда производительность ввода-вывода диска становится более важной, чем оперативная память, в основном случайное чтение ввода-вывода и скорость флеш-синхронизации fsync().

So. Тест с симуляцией рабочей нагрузки с ожидаемым размером данных и см.

Heroku discusses cache in more detail here.

(Я работаю в другой компании в том же пространстве, что и Heroku, в моем профиле, поэтому я неохотно выражаю сильное мнение так или иначе).

+0

+1 Тесты, которые соответствуют вашему варианту использования, - это путь. Ваш экземпляр Linode должен объективно быть лучше для исходного теста, но он может или не может иметь большого значения на практике. Резервные копии, разветвление и последующие огромны для Heroku Postgres. –