Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   ........... OrientDB ........... (https://javascript.ru/forum/offtopic/53202-orientdb.html)

Gozar 26.03.2015 16:42

db.select().from('TestUsers').where({name: 'be398b84d8894456 1427375950809'})

kobezzza 26.03.2015 16:42

Цитата:

Сообщение от Gozar (Сообщение 363363)
FULLTEXT SBTREE

Ну понятное дело, что он будет медленнее работать :) Это же полнотекстовый индекс, а если тебе нужен супер быстрый доступ, то Hash.

Gozar 26.03.2015 16:44

unique_hash_index? Сам отвечу. Да. :) 38 ms

db.select().from('TestUsers').where({name: 'be398b84d8894456 1427375950809'})

kobezzza 26.03.2015 16:45

Цитата:

Сообщение от Gozar (Сообщение 363366)
unique_hash_index?

Ну unique или не unique это уже от твоей задачи зависит, но hash :) Я прост всё с ориент ещё не работал, поэтому говорю в терминах других СУБД.

Если тебе нужно, то ты можешь построить для одного поля несколько индексов: Lucene и Hash например. Hash будет юзается для супер быстрого доступа по полному совпадению, а Lucene при нечётком поиске.

Gozar 26.03.2015 16:47

Цитата:

Сообщение от kobezzza
поэтому говорю в терминах других СУБД.

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

kobezzza 26.03.2015 16:48

Цитата:

и размер на диске не безумный как с fulltext
Ну просто fulltext для других задач.

Gozar 26.03.2015 16:50

Цитата:

Сообщение от kobezzza
Если тебе нужно

Хз куда это пригодиться, но спасибо запомню. Мне нужен будет поиск по тэгам. Думал оставить мысли о нем на потом, но видать судьба :)

Gozar 26.03.2015 16:50

Кстати ты не в курсе, как бы лучше по тегам базу построить? Типа как на youtube

kobezzza 26.03.2015 16:51

Цитата:

Сообщение от Gozar (Сообщение 363373)
Хз куда это пригодиться, но спасибо запомню. Мне нужен будет поиск по тэгам. Думал оставить мысли о нем на потом, но видать судьба :)

Нез :)

Поиграйся ещё с составными индексами (если ещё этого не делал), т.к. это супер мощная штука.

Gozar 26.03.2015 16:52

Наверное стоит создать одну таблицу тегов, а от документа кинуть на них грани? Тормоза только при создании(добавлении нового тэга и связывании документа с тегами через грани), дальше выборка должна быть быстрой :)

kobezzza 26.03.2015 16:53

Цитата:

Сообщение от Gozar (Сообщение 363376)
Кстати ты не в курсе, как бы лучше по тегам базу построить?

Зависит от организации тегов. Если как в Amazon-е анализируется статистика и показывается реклама в зависимости от неё, то самое оптимальное использовать граф (тем более в Ориент он из коробки), а если простая система тегов аля твиттер, то простая коллекция с хеш-индексом.

Цитата:

Сообщение от Gozar (Сообщение 363376)
Типа как на youtube

Однозначно граф.

Gozar 26.03.2015 16:55

kobezzza,
Цитата:

Тормоза только при создании(добавлении нового тэга и связывании документа с тегами через грани), дальше выборка должна быть быстрой
Выше написал, ты успел перелистнуть.

kobezzza 26.03.2015 16:55

Цитата:

Сообщение от Gozar (Сообщение 363378)
Наверное стоит создать одну таблицу тегов, а от документа кинуть на них грани? Тормоза только при создании(добавлении нового тэга и связывании документа с тегами через грани), дальше выборка должна быть быстрой :)

Да, норм.

Gozar 26.03.2015 16:57

Ещё раз спасибо за пояснения, мне работать пора :D

kobezzza 26.03.2015 16:59

Цитата:

Сообщение от Gozar (Сообщение 363387)
Ещё раз спасибо за пояснения, мне работать пора :D

Нез, обращайся :)

Zend 27.03.2015 20:50

Цитата:

.query('update (select expand( in() ) from Test where @rid = ' + gid + ') set status = 1')
мне всё больше начинает нравиться. на мой вкус это очень удобно


вау, можно писать свой функции
.query('update (select expand( in() ) from Test where @rid = ' + gid + ') set status = testFn(outcome)')

Gozar 03.04.2015 20:32

Цитата:

Сообщение от Zend
вау, можно писать

Хочу добавить своё WOW!

OrientDB рвёт MySQL как грелку :D Страшные JOIN-ы превращаются в приятные выборки, там где 9 строчные mysql запросы превращаются в понятные 3 строчные. Хочу забыть мускул как страшный сон.

Gozar 04.04.2015 10:36

Цитата:

Сообщение от kobezzza
Вручную никогда нельзя делать автоинкремент.

Честно говоря если для получения нового значения нужно создать транзакцию update+select, то никак по другому как ручной, такой автоинкремент не назвать. Другого же способа создать autoincrement я не нашёл. Возможно в будущем добавят функцию, что очень желательно, но пока только связка вручную (транзакцию update+select).

kobezzza 04.04.2015 10:48

Цитата:

Сообщение от Gozar (Сообщение 364915)
Честно говоря если для получения нового значения нужно создать транзакцию update+select, то никак по другому как ручной, такой автоинкремент не назвать. Другого же способа создать autoincrement я не нашёл. Возможно в будущем добавят функцию, что очень желательно, но пока только связка вручную (транзакцию update+select).

В многих NOSQL СУБД есть для таких задач selectAndUpdate / selectAndRemove, в Orient такого нет? Просто транзакции это из пушки по воробьям в таком кейзе и сильно ударит по производительности запроса.

kobezzza 04.04.2015 10:54

http://www.orientechnologies.com/doc...l#sql---update

Смотреть return :)

Gozar 04.04.2015 11:39

kobezzza,
Ага, спасибо помогло, на 1 запрос меньше.

kobezzza 04.04.2015 11:43

Цитата:

Сообщение от Gozar (Сообщение 364921)
kobezzza,

Знаешь как запрос написать?
UPDATE counter INCREMENT value = 1 return after $current.counter where name = 'name'

Возвращает value null

А директивы запроса регистрозависимые или нет? Просто следуя примерам в их доке, то как то так:

RETURN AFTER


Мб поможет

http://stackoverflow.com/questions/2...-increment-var

kobezzza 04.04.2015 11:44

Цитата:

Сообщение от Gozar (Сообщение 364922)
kobezzza,
Ага, спасибо помогло, на 1 запрос меньше.

Всегда пожалуйста :)

Gozar 04.04.2015 11:45

.counter лишнее.

counter INCREMENT value = 1 return after $current

Надеюсь в будущем добавят всё таки функцию типа inc() или ключ как в мускуле.

kobezzza 04.04.2015 11:48

Цитата:

Сообщение от Gozar (Сообщение 364927)
.counter лишнее.

counter INCREMENT value = 1 return after $current

Надеюсь в будущем добавят всё таки функцию типа inc() или ключ как в мускуле.

Напиши таск разработчикам :)

Gozar 10.04.2015 20:37

kobezzza,
знаешь как вставлять в ориент (vertex, edges) типа такого: mysql insert if not exist?

kobezzza 12.04.2015 22:43

Цитата:

Сообщение от Gozar (Сообщение 365982)
kobezzza,
знаешь как вставлять в ориент (vertex, edges) типа такого: mysql insert if not exist?

Не знаю, я пока не юзал Ориент, т.к. на работе Монга :)

Safort 13.04.2015 00:06

kobezzza,
Цитата:

я пока не юзал Ориент
Ага! Вот ты и попался) Это как чуваки, которые рьяно выступают за io.js, а у самих Node.js установлен)

kobezzza 13.04.2015 08:21

Цитата:

Сообщение от Safort (Сообщение 366166)
kobezzza,

Ага! Вот ты и попался) Это как чуваки, которые рьяно выступают за io.js, а у самих Node.js установлен)

:D

Gozar 13.04.2015 10:24

Кстати нашёл забавную прогу 0xDBE. Только жаль, что там нет Orient-а.

Gozar 30.04.2015 14:54

http://tftf.ru/stati/orientdb/ Неочевидное и невероятное.

Сначала разместил на хабре, но у них какие-то свои скрепы, только их модерам понятные. Поэтому, буду пополнять тут. http://tftf.ru/stati/orientdb/

Особенно полезно начинающим. Самые популярные проблемы при старте работы с OrientDB.

Safort 30.04.2015 17:38

Gozar,
спасибо, Гозарыч)

Gozar 30.04.2015 19:30

Всегда пожалуйста. :)


Часовой пояс GMT +3, время: 03:59.