26.03.2015, 00:17
|
|
Профессор
|
|
Регистрация: 28.11.2009
Сообщений: 328
|
|
Gozar,
Ага, спс, я в доке тоже уже нашёл описание.
http://www.orientechnologies.com/doc...nsactions.html
А вот с автоинкрементом не всё понятно. У меня апи, и мне нужно возвращать ид-шники записей созданных по запросу. При этом они должны быть простыми числами. Не думаю что юзеру понравится такое: "новая игра номер #12:5" Что с этим делать я хз. Можно немного извратиться и сделать что то таоке: 2125. типа первая цифра - из скольких символов состоит номер кластера, а остальные цифры - позиция. хотя скорее всего номер кластера будет всегда из 2-х цифр.... так что ещё можно упростить. И вообще может ли одна "таблица" быть на нескольких кластерах? При горизонтальном масштабировании наверное может. Всё равно изврат какой то с ID-шниками
|
|
26.03.2015, 00:37
|
|
猫
|
|
Регистрация: 07.06.2007
Сообщений: 7,504
|
|
Сообщение от Zend
|
Всё равно изврат какой то с ID-шниками
|
Просто после мускула непривычно, что автоинкрементом нужно заниматься вручную
Я просто сделал id integer и всё, rid для внутренних нужд, id для адекватного понимания юзерами.
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
|
|
26.03.2015, 10:37
|
|
Профессор
|
|
Регистрация: 28.11.2009
Сообщений: 328
|
|
Ещё один не маловажный момент - скорость. Нашёл данные что в запросах с LIKE ориэнт сливает мускулю в 2 раза. Ну это как бы и понятно, не для LIKE его делали. Интересно как дела с обычными запросами. Например что если сравнить связи в ориэнс с JOIN-ами в мускуле.
Тут вроде как пишут что всё хорошо
Цитата:
|
1. Built for Speed
OrientDB was engineered from the ground up with performance as a key specification. It’s fast on both read and write operations. On writes, it can store up to 150,000 records per second*. The OrientDB time series module can insert 120,000 records per second*, while keeping the time graph synchronized for real-time analytics.
|
Последний раз редактировалось Zend, 26.03.2015 в 12:41.
|
|
26.03.2015, 10:46
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Цитата:
|
Ещё один не маловажный момент - скорость. Нашёл данные что в запросах с LIKE ориэнт сливает мускулю в 2 раза. Ну это как бы и понятно, не для LIKE его делали. Интересно как дела с обычными запросами. Например что если сравнить связи в ориэнс с JOIN-ами в мускуле.
|
Для Like запросов нужно использовать специальные поисковые индексы, например, ElasticSearch, который работает вместе с основной БД или снабжать Like запрос дополнительными условиями по полям, которые есть в индексе.
Цитата:
|
А вот с автоинкрементом не всё понятно.
|
Автоинкремент в NoSQL делается обычно функцией inc, в MongoDB например это $inc. Вручную никогда нельзя делать автоинкремент. Также во многих ORM для NoSQL можно задать схему и указать автоинкремент. Я лично вообще не вижу смысла в создании какого-то цифрового ИД-а, т.к. для внутреннего использования есть родной ИД, а для использования пользователями можно построить дополнительный индекс, например, по имени пользователя.
Цитата:
|
надеюсь это действительно так, по тому как я хочу довольно серьёзный проект на нём написать, не хотелось бы потом в спешке всё на мускуль переводить
|
Ты явно не понимаешь разницы между MySQL (хотя уж лучше Postres взять) и OrientDB. Тут не идёт сравнение лучше/хуже, а совсем другой подход к хранению, масштабированию и выборке данных и выбирать нужно исходя из своей задачи.
Последний раз редактировалось kobezzza, 26.03.2015 в 10:50.
|
|
26.03.2015, 11:40
|
|
猫
|
|
Регистрация: 07.06.2007
Сообщений: 7,504
|
|
Сообщение от Zend
|
Нашёл данные что в запросах с LIKE ориэнт сливает мускулю в 2 раза. Ну это как бы и понятно, не для LIKE его делали.
|
containstext
2001 записей в MySql
SELECT * FROM basic WHERE des LIKE '%Яблок%' LIMIT 0 , 30
54ms
2400 записей в OrientDB
db.select().from('Basic').containsText({des: 'Яблок'}).all().then(function(){});
83ms
Строение таблиц идентично, кроме того, что в Orient-овской табличке есть еще (4 типа ребра с привязками на саму себя(~1000 ребер)).
Сообщение от Zend
|
что если сравнить связи в ориэнс с JOIN-ами в мускуле.
|
Сравни, расскажешь, а я пожалуй даже пытаться не буду.
Сообщение от kobezzza
|
Вручную никогда нельзя делать автоинкремент.
|
http://www.orientechnologies.com/doc...increment.html
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
|
|
26.03.2015, 11:46
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
По ссылке как раз таки автоматический инкремент. Вручную - это когда берёшь значение и апдейтиш на value + 1.
|
|
26.03.2015, 11:46
|
|
猫
|
|
Регистрация: 07.06.2007
Сообщений: 7,504
|
|
Сообщение от kobezzza
|
для использования пользователями можно построить дополнительный индекс, например, по имени пользователя.
|
Не думается мне это оптимальным, особенно если разрешены имена в UTF-8 и идет вывод в адресную строку. Ко всему прочему поиск по 1000000 записей не очень нужная операция, когда её можно избежать. Могу даже дать гарантию, что поиск по цифирке будет быстрее тем больше, чем больше записей в табличке.
Сообщение от kobezzza
|
Вручную - это когда берёшь значение и апдейтиш на value + 1.
|
А, ты про это.
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
|
|
26.03.2015, 11:50
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Сообщение от Gozar
|
Не думается мне это оптимальным, особенно если разрешены имена в UTF-8 и идет вывод в адресную строку. Ко всему прочему поиск по 1000000 записей не очень нужная операция, когда её можно избежать. Могу даже дать гарантию, что поиск по цифирке будет быстрее тем больше, чем больше записей в табличке.
|
Это оптимизация на спичках + гораздо удобнее видеть URL в адресной строке /profile/kobezzza чем profile/1030456.
Что касается по поиску, то если построен индекс, то поиск будет одинаковой логарифмической сложности и не будет абсолютно никакой разницы число там или строка.
Вообще главная причина тормозов всех БД, что люди которые ими пользуются либо не знают про вторичные и составные индексы, либо строят их не оптимально. Исключение пожалуй составляет полнотекстовый поиск, для которого лучше юзать специальные решения, например, ElasticSearch.
Последний раз редактировалось kobezzza, 26.03.2015 в 11:54.
|
|
26.03.2015, 11:58
|
|
猫
|
|
Регистрация: 07.06.2007
Сообщений: 7,504
|
|
Сообщение от kobezzza
|
Это оптимизация на спичках
|
83ms на 2000 записей, против 3ms. Очевидно, что это не экономия на спичках. С учетом того, что у меня это частая операция.
Сообщение от kobezzza
|
то если построен индекс,
|
Вместо экономии на спичках, давай создадим ещё и индекс на бессмысленный поиск, никому не нужный, чтобы потешить самолюбие программиста, потому что пользователям на это плевать с высокой колокольни.
Сообщение от kobezzza
|
/profile/kobezzza
|
Ну ты же в курсе что в UTF есть ещё и другие символы, кроме латиницы? А ещё когда пользователь запостит ссылку на каком-нибудь форуме на свой профиль, вот его ждет необычный сюрприз
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
|
|
26.03.2015, 12:00
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Цитата:
|
Вместо экономии на спичках, давай создадим ещё и индекс на бессмысленный поиск, никому не нужный, чтобы потешить самолюбие программиста, потому что пользователям на это плевать с высокой колокольни.
|
База должна уметь горизонтально масштабироваться, все остальное не критично, использование индексов - это стандарт. Если для Orient создание индекса дорогая операция (в чём я сомневаюсь), то можно использовать дополнительно Key-Value хранилище, например Redis (кстати это очень распространённое решение).
Цитата:
|
Ну ты же в курсе что в UTF есть ещё и другие символы, кроме латиницы? А ещё когда пользователь запостит ссылку на каком-нибудь форуме на свой профиль, вот его ждет необычный сюрприз
|
Просто ввести ограничение на использование латиницы, как сделано в VK или Facebook.
|
|
|
|