Недавно я только начал пробовать Титан и не знаю, как улучшить производительность, если это возможно. Для простого примера использования, который мы создали, мы настроили пользователей, у каждого из которых были свои сообщения. В настоящее время у нас 20 пользователей, и все они распределены по 580 постам в данных бенчмаркинга. Наше фактическое приложение очень динамично, поэтому некоторые конфигурации могут не применяться, о чем я упомяну позже.
Перед фактической вставкой я создаю индекс свойств для уникального идентификатора данных (пользователь/сообщения), который в данном случае является именем ключа, «имя». Кроме того, включено автоматическое создание ключей/меток, поэтому разрешено создание других свойств/меток.
g.makeKey('name').dataType(String.class).indexed(Vertex.class).unique().make()
После создания индекса я вставляю вершины пользователей/сообщений с ребрами между ними, указывая, что указанный пользователь создал указанное сообщение.
Теперь, чтобы вызвать обход. Конкретный запрос, который я хочу сделать, - это список имен пользователей / вершин пользователей, найдите мне все их сообщения. Например, заданы пользователи с именами «user_1», «user_2» и пограничной меткой «user_posts_relationship».
g.V.copySplit(_().has('name', 'user_1'), _().has('name', 'user_2').exhaustMerge().out('user_posts_relationship')
Теперь, учитывая все 20 пользователей в наших поддельных данных, это занимает примерно 2 секунды. Это плохая производительность, учитывая количество сообщений? Это то, как я должен делать обход, учитывая список начальных вершин? Причина, по которой я не использую помощника MultiVertexQuery, заключается в том, что из-за нашего фактического приложения мы не знаем, сколько ребер нам нужно перепрыгнуть, и, согласно моим исследованиям, MultiVertexQuery опускается только на один уровень.
Наши текущие характеристики следующие:
- Титан 0.4.4
- Кассандра 2.0.9
- 1 ЦП / 512 МБ
- Убунту
Извините за мои ошибки, если я их делаю, и хотел бы получить помощь!