2016-05-29 1 views
0

, по общему признанию, большая часть моего опыта работы с базой данных является реляционной. одним из принципов в этом пространстве является предотвращение перемещения данных по сети. это проявляется при использовании что-то вроде:будут ли запросы графства Гремлин всегда выполнять операции в собственном адресном пространстве?

select * from person order by last_name limit 10 

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

select * from person 

, а затем заказывать и принимать топ-10 на клиента, который может иметь катастрофические последствия, если есть записи миллиона человек.

так, с Gremlin (из Groovy), если я делаю что-то вроде:

g.V().has('@class', 'Person').order{println('!'); it.a.last_name <=> it.b.last_name}[0..9] 

я видя ! печататься, поэтому я предполагаю, что это объединение всех Person записи в адресное пространство моего клиента перед порядком и предельными шагами, которые не являются желаемым эффектом.

делать мои варианты обработки запросов полностью в базе данных движка становятся специфичными для продукта (например, для orient-db возможно отправить запрос в их вкусе SQL), или есть что-то о Гремлине, которого я не хватает?

ответ

0

Если вы хотите, чтобы оптимизатор запросов для исполнителей был задействован, вам нужно использовать как можно больше шагов Gremlin и избежать чистой обработки Groovy/in-memory ваших графических проходов.

Вы, скорее всего, искать что-то вроде этого (как из TinkerPop v3.2.0):

g.V().has('@class', 'Person').order().by('last_name', incr).limit(10) 

Если вы нашли себя с помощью лямбды, скорее всего, часто высока, что это может быть сделано с чистыми шагами Gremlin , Благодарим Гремлина за шаги над лямбдами.

См TinkerPop v3.2.0 документация:

+0

благодаря @jbmusso, что имеет смысл. к сожалению, похоже, что версия ориентации, которую я использую ('2.2'), все еще находится на gremlin 2, которая пока не поддерживает этот синтаксис. я задаюсь вопросом, есть ли синтаксис в gremlin 2 для заказа, ограничения и смещения, который позволяет выполнять на стороне сервера ... это очень хороший e-mail, чтобы отправить как отдельный вопрос;) –

Смежные вопросы