Данные временного ряда Cassandra

Мы смотрим на использование Cassandra для хранения потока информации, прибывающей из различных источников.

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

Например, мы должны будем получить объект между датой и временем dt1 и датой и временем dt2.

Мы в настоящее время рассматриваем созданную метку времени Unix как ключ, указывающий на фактический объект затем с помощью get_key_range для запросов для получения?

Очевидно, это не работало бы, если два объекта имеют ту же метку времени.

Действительно ли это - лучший способ сделать дату и время в хранилищах NOSQL в целом?

17
задан Rockett 6 February 2010 в 06:26
поделиться

1 ответ

Да, это можно сделать из командной строки, минуя ваш сервер. Эта страница объясняет все: Perl CGI отладка (sitewizard.com) (особенно пункт 6 на этой странице). Здесь я цитирую самую важную часть:

Чтобы проверить сценарий в автономном режиме с помощью метод GET, просто установите QUERY_STRING переменная среды соответственно. При использовании Windows можно использовать следующую команду: строка в окне DOS перед запуском сценарий в том же окне:

set QUERY_STRING=recipient=John@Doe.com&Fullname=M+Name

To тестирования сценария в автономном режиме с помощью метод POST, поместите строку ниже в текстовый файл с именем testinput.txt.

recipient = John@Doe.com & Fullname = M + Name

Затем перенаправить этот файл в качестве входных данных в сценарий. В системах Unix, а также в командной строке MSDOS Windows можно Сделайте это так:

perl -w scriptname.pl < testinput.txt

Ваш сценарий получит это ввод, как если бы он был отправлен форма на сайте. Проверьте ошибку сообщения, которые передают носики, если таковые имеются, помочь вам отследить проблему в сценарий.

-121--2187228-

Я получил частичное решение из Как принять пустое значение в boost::program_options, которое предлагает использовать метод implicit_value для тех параметров, которые могут иметь или не иметь аргументы. Поэтому мой вызов инициализировать параметр «яркость» выглядит так:

 ("brightness,b", po::value<string>()->implicit_value(""),

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

    // check if we're just printing a feature's current value
    bool gotFeature = false;
    for (po::variables_map::iterator iter = vm.begin(); iter != vm.end(); ++iter)
    {
        /// parameter has been given with no value
        if (iter->second.value().type() == typeid(string))
            if (iter->second.as<string>().empty())
            {
                gotFeature = true;
                printFeatureValue(iter->first, camera);
            }
    }

    // this is all we're supposed to do, time to exit
    if (gotFeature)
    {
        cleanup(dc1394, camera, cameras);
        return 0;
    }

UPDATE: это меняет вышеупомянутый синтаксис, при использовании неявных значений теперь аргументы, когда они даны, должны иметь вид:

./dc-ctl -b500

вместо

./dc-ctl -b 500

Надеюсь, это полезно для кого-то другого.

-121--4043417-

Строки Кассандры могут быть очень большими, поэтому рекомендуется моделировать их как столбцы в строке, а не строки в CF; затем можно использовать операции среза столбца, которые быстрее, чем срезы строк. Если с этим не связаны «натуральные» клавиши, то можно использовать ежедневные или почасовые клавиши типа «2010/02/08 13:00».

В противном случае да, использование запросов диапазона (get_key_range устаревает в 0.5; использовать get_range_slice) - ваш лучший вариант.

15
ответ дан 30 November 2019 в 14:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: