........... OrientDB ...........
http://tftf.ru/stati/orientdb/ - основные проблемы и решения. Очень полезный FAQ.
1. Если кто-то юзал, расскажите как полёт, какие косяки и т.д. 2. База дружит с js, а с php только через левый бинарный драйвер? https://github.com/AntonTerekhov/OrientDB-PHP 3. Вытекает из 2. Сервер лучше поднять io.js, нежели возиться с php? Понимаю, что не по адресу, но php уже достало и хотелось бы сократить его участие до минимума. Хочу запустить соцсеть и mysql для этого плохо подходит. Как у OrientDB и io.js со стабильностью или лучше пока на mongoDB и node.js? |
Gozar,
Цитата:
Цитата:
Цитата:
|
Poznakomlus,
Цитата:
|
Safort,
Нужны минимум графы, а документы + графы очень заманчиво, поэтому OrientDB. Я не буду её использовать, только если есть жуткие косяки. Если вы их не знает идите нафиг из темы. Цитата:
|
ЖиШи: У меня уже запилена соц сеть на php+mysql и mysql подходит для этого дела как вертолету пропеллер снизу. На одну страничку 7 таблиц. Страшно представить когда юзеров будет десятки тысяч. Про расширяемость даже сказать страшно.
|
Цитата:
|
melky,
Ты как графы хранишь, отдельной табличкой? http://www.linux.org.ru/forum/web-development/9909010 Я бы не рыпался, если бы мне не было жизненно необходимо иметь графы. |
Цитата:
car_theme car_runner car_winner А ведь я только начал, можно сказать тест провел. И дальше будет только страшнее, а когда поля JOIN -ов пойдут, можно будет только горючими слезами рыдать. Кто хочет поговорить, прочитайте сначала пожалуйста "NoSQL. Новая методология разработки нереляционных баз данных" хотя бы полкнижки и попробуйте OrientDB. А то разговор не клеиться из-за того, что вы не понимаете о чем он. |
Цитата:
можно было бы и в текущем проекте графоориентированную БД заюзать, уж больно интересная |
Чем OrientDB мне больше MongoDB нравится:
1) В MongoDB дурацкий язык запросов, а в OrientDB SQL-like; 2) В MongoDB атомарность только на уровне отдельного запроса и если нужны транзакции, то идёт пляска с findAndModify, а в OrientDB есть поддержка ACID транзакций; 3) MongoDB чисто-документно ориентированная СУБД, и для графов приходится заюзывать отдельно графовую СУБД (например, Neo4J), а OrientDB документы + графы. Пока для меня открыты вопросы по горизонтальному масштабированию, т.е. сегментированию БД, ибо в Монге - это часть АПИ, а тут я пока хз, но писать механизм вручную - мега адский гемор. Я пока сам Orient не пробывал, но попробую точно, уж больно много плюшек. |
Цитата:
для linux: Если установлена java, то просто распаковываешь архив и: sh ./server.sh В комплекте админка (http://localhost:2480/), чуть-чуть похожа на phpmyadmin, есть графическая утилита (кавайная) для визуализации связей. Цитата:
|
db огонь.
Было бы здорово, если бы можно было выбрать короткой строкой Вершину и все Вершины связанные Гранями и получить что-то подобное. select id, name, out('Type') as type, chain('Thematic') as thematic from Star where id=2015 { id:2015, name:'Bada', type:'Big', thematic:[{ id:101, name: 'bla' }, { id:102, name: 'blu' }] } А не то, что сейчас: select id, name, out('Type') as type, out('Thematic').id as th_id, out('Thematic').name as th_name from Star where id=2015 { id:2015, name:'Bada', type:'Big', th_id:[101, 102], th_name: ['bla', 'blu'] } Целая миллисекунда нужна на пересборку в объект. :( |
Я просто храню всё списком. А где нужно, достаю его из БД и обрабатываю волшебным рекурсивным методом (чаще всего на клиенте). И я не встретил не одной задачи, где бы меня этот подход не выручил. Правда я и соц сеть не писал ни когда, так что возможно дело в недостатке опыта.
п.с.: отдаю своё предпочтение PostgreSQL (юзаю phpPgAdmin, хотя пишу на nodejs) |
Цитата:
Цитата:
Цитата:
|
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
сферический пример в вакууме намбо уан: Есть каталог товаров. Нужно хранить/отображать(типа навигация, разворачивающийся список) структуру категорий. Ну сколько их? Ну 300. Достал все из БД и строй дерево жабаскриптом на клиенте. Не 300 а 5000000000? Ну подгружай по уровням. Да, нудно вводить понятие уровня, нумеровать их при переносе одной категории в другую и тп, но это всё дело не хитрое. сферический пример в вакууме намбо ту: мля, я даже не знаю что ещё придумать. по моему ситуацию с списком категорий с незначительными модификациями можно интерполировать чуть больше чем на все случаи. |
Цитата:
это конечно было бы здорово, но когда то нужно и мозгом думать |
Цитата:
Цитата:
Задача: Есть БД пользователей, у пользователей есть чуть более чем 100500 разных характеристик, интересов и т.д. Имеем Пользователя с динамическим количеством 100500 параметров(каждый из это список ссылок на отдельную "таблицу" или "класс" или внутренняя ссылка на другое поле той же "таблицы"). Какие ещё динамические подгрузки, какие ещё категории?! Если ты не сможешь выбирать пользователя и связанно с ним подгружать выборки из этих 100500 параметров, то ты получишь ад. Самый натуральный, не выдуманный, а АДСКИЙ ад. Через 5-10 параметров, которые ты осилишь своими так называемыми списками ты получишь код работающий 1-2-3-10 секунд... Даже если ты супер-пупер программист и проектировал 10 лет базы данных, а я их проектировал, т.к. у меня в мускуле аж 2 вида связей: списки смежности и граф на 5 внешних параметров. Я не пишу на Postgree не потому, что мне взападло, а потому что она не может то, что мне нужно. Не умеет. Если умеет, то я тебя прошу покажи! Создай 5 пользователей с 10 частично-разными наборами характеристик, а затем свяжи их вместе и покажи, что у тебя получится. |
Цитата:
Цитата:
|
Кто не в теме, подумает что это не в тему, но мне почему то вспомнилось:
![]() |
Цитата:
|
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
Цитата:
Юзеры и расшифровки, для связей таблица не нужна. Слив засчитан. :nono: Наркаманские вбросы Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
http://www.postgresql.org/docs/9.1/s...aggregate.html Код:
Function |
Цитата:
Напиши запрос и то, что он возвращает. |
Чёт у меня затык с тем чтобы связанные записи получить. Кст, кто какой модуль использует? :)
|
на первую часть отвечу сам.
db .select('*, out_.in.fname as fname, out_.in.lname as lname, out_.in.photo_50 as photo') .from('Post') .transform(function (record) { record.fname = record.fname[0]; record.lname = record.lname[0]; record.photo = record.photo[0]; delete record._out; return record; }) .order('time desc') .limit(10) .all() .then(function (results){ |
и ещё вопрос в догонку. про автоинкремент и транзакции в orientDB кто нибудь слышал?
|
Цитата:
|
Gozar,
Ага, спс, я в доке тоже уже нашёл описание. http://www.orientechnologies.com/doc...nsactions.html А вот с автоинкрементом не всё понятно. У меня апи, и мне нужно возвращать ид-шники записей созданных по запросу. При этом они должны быть простыми числами. Не думаю что юзеру понравится такое: "новая игра номер #12:5" Что с этим делать я хз. Можно немного извратиться и сделать что то таоке: 2125. типа первая цифра - из скольких символов состоит номер кластера, а остальные цифры - позиция. хотя скорее всего номер кластера будет всегда из 2-х цифр.... так что ещё можно упростить. И вообще может ли одна "таблица" быть на нескольких кластерах? При горизонтальном масштабировании наверное может. Всё равно изврат какой то с ID-шниками |
Цитата:
Я просто сделал id integer и всё, rid для внутренних нужд, id для адекватного понимания юзерами. |
Ещё один не маловажный момент - скорость. Нашёл данные что в запросах с LIKE ориэнт сливает мускулю в 2 раза. Ну это как бы и понятно, не для LIKE его делали. Интересно как дела с обычными запросами. Например что если сравнить связи в ориэнс с JOIN-ами в мускуле.
Тут вроде как пишут что всё хорошо Цитата:
|
Цитата:
Цитата:
Цитата:
|
Цитата:
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 ребер)). Цитата:
Цитата:
|
По ссылке как раз таки автоматический инкремент. Вручную - это когда берёшь значение и апдейтиш на value + 1.
|
Цитата:
Цитата:
|
Цитата:
Что касается по поиску, то если построен индекс, то поиск будет одинаковой логарифмической сложности и не будет абсолютно никакой разницы число там или строка. Вообще главная причина тормозов всех БД, что люди которые ими пользуются либо не знают про вторичные и составные индексы, либо строят их не оптимально. Исключение пожалуй составляет полнотекстовый поиск, для которого лучше юзать специальные решения, например, ElasticSearch. |
Цитата:
Цитата:
Цитата:
|
Цитата:
Цитата:
|
Часовой пояс GMT +3, время: 03:06. |