1

У меня массивная таблица, которая записывает события, происходящие на нашем веб-сайте. У него десятки миллионов строк.Google Cloud SQL Timeseries Statistics

Я уже пытался добавить индексирование и другие оптимизации.

Тем не менее, он по-прежнему очень облагается налогом на нашем сервере (хотя у нас довольно мощный) и занимает 20 секунд на некоторых крупных графических/графических запросах. До тех пор, пока наш демон вмешивается, чтобы часто убивать запросы.

В настоящее время у нас есть экземпляр Google Compute на интерфейсе и экземпляр Google SQL на сервере.

Итак, мой вопрос в этом - есть ли лучший способ хранения данных временных рядов запросов с помощью Google Cloud?

Я имею в виду, есть ли у них какой-то специализированный сервер или механизм хранения?

Мне нужно что-то, что я могу подключить к своему php-приложению.

+1

Посмотрите на Cloud Bigtable: https://cloud.google.com/bigtable/docs/schema-design-time -series – Vadim

+0

ah Я вижу, я немного смущен тем, как запросить его, если я не могу использовать mysql - где он говорит, как подключиться к нему из приложения php? :) –

+1

Он поддерживает API HBase, но не похоже, что есть собственный PHP-клиент. Переход от mysql к магазину, как Bigtable, может включать в себя нетривиальные инвестиции. Если вы действительно максимизируете свой экземпляр mysql, вы можете рассмотреть возможность переноса данных по нескольким экземплярам (хранение подмножества данных по каждому экземпляру), но это также требует нетривиальных инвестиций и имеет свои собственные компромиссы. В Интернете много статей о mysql sharding. – Vadim

ответ

1

Elasticsearch является удивительным для данных временных рядов.

Вы можете запустить его на вычислительном движке или иметь размещенную версию.

Доступ к нему осуществляется через HTTP JSON API, и есть несколько PHP-клиентов (хотя я, как правило, делаю вызовы API напрямую, так как мне лучше понять их язык запросов таким образом).

https://www.elastic.co

Они также имеют автоматизированный интерфейс для построения графиков временных рядов данных. Это называется Кибана.

Наслаждайтесь!

0

Обновление: Я пропустил важную часть вопроса «с помощью Google Cloud?« Мой ответ не использует специализированные службы или инфраструктуру GC.


Я использовал ElasticSearch для хранения событий и профилирования информации с веб-сайта. Я даже написал файл statsd, хранящий информацию о статике в elasticsearch.

После того, как elasticsearch изменил kibana с 3 до 4, я нашел интерфейс крайне плохим для просмотра статистики. Вы можете отображать только 1 метрику из каждого запроса, поэтому, если вы хотите отображать время, среднее время и среднее время на 90%, вы должны сделать 3 запроса вместо 1, который возвращает 3 значения. (тот же вопрос, существующий в 3, только версия 4 выглядела более уродливой и была более запутанной для моих пользователей)

Моя рекомендация состоит в том, чтобы выбрать базу данных временных рядов, которая поддерживается графикой - графический интерфейс временного ряда. OpenTSDB хранит информацию в формате, подобном hadoop, поэтому он сможет масштабироваться в массовом порядке. Большинство других хранит события, похожие на информацию на основе строк.

Для получения статистики вы можете использовать statsd или reimann (или reimann, а затем statsd). Reimann может добавлять оповещения и мониторинг до того, как события будут отправлены в вашу базу данных статистики, statsd просто сопоставляет, усредняет и сбрасывает статистику в БД.