powered by simpleCommunicator - 2.0.19     © 2024 Programmizd 02
Map
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Интересный взгляд на проблему сравнения
25 сообщений из 50, страница 2 из 2
Интересный взгляд на проблему сравнения
    #39851936
andy st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nitro_Junkieandy stВ теме по MS SQL посоветовали материализацию count(*) на млрд записях, ранее заявленную как круто работающую, сделать в пару слегка неадекватных прыжков. Откуда разработчик должен знать о том, как работает данных фреймворк и что надо так глумиться над ним?

Тут вообще-то не две крайности, все руками и все автоматически. Есть полутона. Хотя конечно если бы платформа сама умела разбивать материализации на неконкурентные, и вообще сама умела бы их создавать было бы гораздо круче. Но лучшее как известно враг хорошего.

Только не ляпните последнюю фразу гденить на презентации продукта или в статье на том же хабре - это первый звонок о том, что разрабы дошли до своего предела и дальше не хватает либо ресурсов, либо мозгов.Но, в любом случае, когда презенуют очередную "серебряную пулю" для "универсального мгновенного и экстраординарного улучшения" продуктов, в которые вложено на несколько порядков больше ресурсов возникает только одна мысль - подозрение. Подозрение, что впаривают дичь, что разработчики слегонца так "чрезмерно самоуверены" ну и т.п...

Nitro_Junkieandy stА вот работодателю интересно подсадить работника на уникальный с минимальным количеством вакансий фреймворк, чтобы он потом не сбежал куда, где кормят лучше. Ибо нахрен не нужен спец, который хорошо знает что-то никому никуда не упирающееся...

Я, например, за последние 5 лет работал с :
1. Groovy под Jenkins
2. Java - бэкенд, десктоп
3. JavaScript + React, Java + GWT - фронтенд
4. NSIS - инсталлятор
5. ANTLR, GrammarKit + IDEA - работа с языками интерпретаторы, IDE
6. PHP + October CMS - когда на сайт надо было подключить сложную функциональность, которую отдавать разработчикам сайтов себе дороже

и явно упустил еще с пяток фреймворков и языков.

Вообще в современном мире где пять лет назад никто не слышал про React и NoSQL, а технологии меняются раз в 3 года, умение разбираться в них по сути единственный важный навык программиста. И человек, который не умеет этого делать а сфокусирован на конкретных технологиях - херовый программист. Я например в резюме на предыдущий опыт вообще не смотрю, потому как хорошо знаю, что человек с мозгами вообще без опыта в технологии через 3 месяца может быть гораздо полезнее на проекте, чем человек с 10+ лет опыта, который не умеет систематизировать информацию и составлять общую картину. И бизнесу нужны люди умеющие решать проблемы, а не с длинным резюме.
Помойму 5 пукнтов + еще "с пяток фреймворков" - это и есть немного длинное резюме? не?
nosql было до sql *дцать лет назад, называл только каждый разработчик как хотел. То, что кучу разных технологий назвали одним словом несколько лет назад означает лишь то, что кто-то сумел приписать no к sql. Больше никаких заслуг тут нет.
React - это очень частный случай в сфере разработки ПО и его знание в других случаях вообще никуда не упирается.
а так: "я знаю каратэ. дзюдо, самбо и еще много других страшных слов" (с) не я.
фтопку такого разраба.
...
Рейтинг: 0 / 0
Интересный взгляд на проблему сравнения
    #39851943
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andy stНо, в любом случае, когда презенуют очередную "серебряную пулю" для "универсального мгновенного и экстраординарного улучшения" продуктов, в которые вложено на несколько порядков больше ресурсов возникает только одна мысль - подозрение. Подозрение, что впаривают дичь, что разработчики слегонца так "чрезмерно самоуверены" ну и т.п...

Ну вы же понимаете, что вложение ресурсов очень часто слабо коррелированно с результатом. То есть алгоритм со сложностью O(n) даже на моем компьютере обгонит алгоритм со сложностью O(n!) на суперкомпьютере. Или другими словами знание куда бежать важнее скорости бега.

Хотя подозрение вполне нормальная реакция на все новое. Но как и у любой инновации есть две претензии:
1. Это уже было в продукте X. Тут все проще даже ничего проверять не надо, достаточно привести пример этого X. Но именно для этого на сайте сделано сравнение с существующими технологиями, и сейчас делаются дополнительные статьи (вот одна про SQL была).
2. Это не заработает. Вот тут сложнее, можно конечно предложить приехать на экскурсию, но мало кто согласится. В любом случае преодолеть это сомнение вопрос времени.

andy stПомойму 5 пукнтов + еще "с пяток фреймворков" - это и есть немного длинное резюме? не?
nosql было до sql *дцать лет назад, называл только каждый разработчик как хотел. То, что кучу разных технологий назвали одним словом несколько лет назад означает лишь то, что кто-то сумел приписать no к sql. Больше никаких заслуг тут нет.
React - это очень частный случай в сфере разработки ПО и его знание в других случаях вообще никуда не упирается.
а так: "я знаю каратэ. дзюдо, самбо и еще много других страшных слов" (с) не я.
фтопку такого разраба.

Еще раз, я сказал то что для настоящего разработчика технологии это не более чем инструмент. Его мозги куда важнее. Если они есть , разработчик сможет пользоваться любым инструментом. И экскаватором, даже если он никогда его в глаза не видел, выкопает яму быстрее чем лопатой.
...
Рейтинг: 0 / 0
Интересный взгляд на проблему сравнения
    #39851975
andy st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nitro_Junkieandy stНо, в любом случае, когда презенуют очередную "серебряную пулю" для "универсального мгновенного и экстраординарного улучшения" продуктов, в которые вложено на несколько порядков больше ресурсов возникает только одна мысль - подозрение. Подозрение, что впаривают дичь, что разработчики слегонца так "чрезмерно самоуверены" ну и т.п...

Ну вы же понимаете, что вложение ресурсов очень часто слабо коррелированно с результатом. То есть алгоритм со сложностью O(n) даже на моем компьютере обгонит алгоритм со сложностью O(n!) на суперкомпьютере. Или другими словами знание куда бежать важнее скорости бега.

Вообще не понимаю.
Не путайте плз вычислительные ресурсы - аналог ресурса кодировщиков уровня говнокода, и интеллектуальные. Суперкомп может за затратить время на анализ и выбор аналогичного алгоритма с O(1). Тогда ваш комп убудет в дупу.
Думаю, людей, "знающих куда бежать" в том же MS или Oracle существенно больше и "знают" они существенно лучше.
Nitro_JunkieХотя подозрение вполне нормальная реакция на все новое. Но как и у любой инновации есть две претензии:
1. Это уже было в продукте X. Тут все проще даже ничего проверять не надо, достаточно привести пример этого X. Но именно для этого на сайте сделано сравнение с существующими технологиями, и сейчас делаются дополнительные статьи (вот одна про SQL была).
2. Это не заработает. Вот тут сложнее, можно конечно предложить приехать на экскурсию, но мало кто согласится. В любом случае преодолеть это сомнение вопрос времени.

Нужно найти жертву для success story, запилить там реальный проект (желательно чуть толще, чем "АРМ продавца билетов в туалет") и уж тогда что-то писать на техническом ресурсе. Точнее не что-то, а описать проект, его объемы, процесс внедрения, эффект от внедрения.
А пока единственный шанс это впарить - найти не совсем вменяемого топа, у которого подчиненные не смогут обосновать нецелесообразность внедрения этого продукта :) А потом молиться, чтобы не подсунули проект, который реализовать на продукте будет либо очень сложно, либо вообще невозможно.

Nitro_Junkieandy stПомойму 5 пукнтов + еще "с пяток фреймворков" - это и есть немного длинное резюме? не?
nosql было до sql *дцать лет назад, называл только каждый разработчик как хотел. То, что кучу разных технологий назвали одним словом несколько лет назад означает лишь то, что кто-то сумел приписать no к sql. Больше никаких заслуг тут нет.
React - это очень частный случай в сфере разработки ПО и его знание в других случаях вообще никуда не упирается.
а так: "я знаю каратэ. дзюдо, самбо и еще много других страшных слов" (с) не я.
фтопку такого разраба.
Еще раз, я сказал то что для настоящего разработчика технологии это не более чем инструмент. Его мозги куда важнее. Если они есть , разработчик сможет пользоваться любым инструментом. И экскаватором, даже если он никогда его в глаза не видел, выкопает яму быстрее чем лопатой.
мозги важнее, но не показатель "знаю много страшных слов", т.е. пробежался по 100500 технологиям по верхам и стал мегаспецом.
ps.: запаришся копать экскаватором, если ни разу до этого за рычагами не сидел.
...
Рейтинг: 0 / 0
Интересный взгляд на проблему сравнения
    #39851989
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_Junkie И там нужны именно индексы по двум полям, индексами по одному полю там никак не обойтись.
гм, вот это поворот! А оптимизатор Firebird прекрасно с этим справляется. Если есть 4 одиночных индекса, то он просто строит битовые маски по каждому условию, а затем склеивает их теми самыми битовыми операциями запроса.
И работает, это, прости господи, уже лет 25 точно.
...
Рейтинг: 0 / 0
Интересный взгляд на проблему сравнения
    #39851990
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andy stВообще не понимаю.
Не путайте плз вычислительные ресурсы - аналог ресурса кодировщиков уровня говнокода, и интеллектуальные. Суперкомп может за затратить время на анализ и выбор аналогичного алгоритма с O(1). Тогда ваш комп убудет в дупу.
Думаю, людей, "знающих куда бежать" в том же MS или Oracle существенно больше и "знают" они существенно лучше.

Это очень наивное представление. Если бы так было, никаких Гуглов, Фейсбуков, Эпплов, Тесел и т.п. не существовало бы. Собственно весь смысл крупных компаний в том чтобы не изобретать ничего, а ждать пока это кто-то другой сделает и покупать (если конечно рост не будет такой стремительный что это не получится)

andy stНужно найти жертву для success story, запилить там реальный проект (желательно чуть толще, чем "АРМ продавца билетов в туалет") и уж тогда что-то писать на техническом ресурсе. Точнее не что-то, а описать проект, его объемы, процесс внедрения, эффект от внедрения.
А пока единственный шанс это впарить - найти не совсем вменяемого топа, у которого подчиненные не смогут обосновать нецелесообразность внедрения этого продукта :) А потом молиться, чтобы не подсунули проект, который реализовать на продукте будет либо очень сложно, либо вообще невозможно.

Вы наверное комменты к статям не читали и даже не гуглили. Мы уже подмяли под себя больше половину крупной розницы в Беларуси, и сейчас начинаем на российский рынок выходить.

И на lsFusion уже больше 40 проектов, в том числе в России (некоторые достаточно публичные и их нельзя называть без согласования с их ИТ). Причем большинство этих проектов с более чем 500 одновременных пользователей и террабайтными базами (в которых, например, все чеки с детализацией онлайн сразу с распределением по партиям принимаются и это на паре серверов стоимостью 10к максимум). Собственно проектов всего 40 потому как с мелочевкой как 1С пока предпочитаем не связываться, но зато стараемся брать проекты из разных областей (от ERP до BPM и ECM)

andy stмозги важнее, но не показатель "знаю много страшных слов", т.е. пробежался по 100500 технологиям по верхам и стал мегаспецом.
ps.: запаришся копать экскаватором, если ни разу до этого за рычагами не сидел.
Вы передергиваете. Я как раз и говорю что знание технологий - пыль. Умение думать makes difference.

Ну если вы не умеете учиться - то да запаришься. А если есть мозги, то можно легко обучиться чему угодно .
...
Рейтинг: 0 / 0
Интересный взгляд на проблему сравнения
    #39851998
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvNitro_Junkie И там нужны именно индексы по двум полям, индексами по одному полю там никак не обойтись.
гм, вот это поворот! А оптимизатор Firebird прекрасно с этим справляется. Если есть 4 одиночных индекса, то он просто строит битовые маски по каждому условию, а затем склеивает их теми самыми битовыми операциями запроса.
И работает, это, прости господи, уже лет 25 точно.

Не поверите, но ms sql и oracle это тоже делают, но это все равно на порядок медленнее, чем использовать индексы по двум полям (см. статью).
...
Рейтинг: 0 / 0
Интересный взгляд на проблему сравнения
    #39852012
andy st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nitro_Junkieandy stВообще не понимаю.
Не путайте плз вычислительные ресурсы - аналог ресурса кодировщиков уровня говнокода, и интеллектуальные. Суперкомп может за затратить время на анализ и выбор аналогичного алгоритма с O(1). Тогда ваш комп убудет в дупу.
Думаю, людей, "знающих куда бежать" в том же MS или Oracle существенно больше и "знают" они существенно лучше.

Это очень наивное представление. Если бы так было, никаких Гуглов, Фейсбуков, Эпплов, Тесел и т.п. не существовало бы. Собственно весь смысл крупных компаний в том чтобы не изобретать ничего, а ждать пока это кто-то другой сделает и покупать (если конечно рост не будет такой стремительный что это не получится)

"Знают" они однозначно лучше. Иначе бы вы свою субд запилили, с блекджеком и т.п. И язык программирования свой тоже...
Ну и ждем, когда вас купят MS. Ну или вы купите MS...
Nitro_Junkieandy stНужно найти жертву для success story, запилить там реальный проект (желательно чуть толще, чем "АРМ продавца билетов в туалет") и уж тогда что-то писать на техническом ресурсе. Точнее не что-то, а описать проект, его объемы, процесс внедрения, эффект от внедрения.
А пока единственный шанс это впарить - найти не совсем вменяемого топа, у которого подчиненные не смогут обосновать нецелесообразность внедрения этого продукта :) А потом молиться, чтобы не подсунули проект, который реализовать на продукте будет либо очень сложно, либо вообще невозможно.

Вы наверное комменты к статям не читали и даже не гуглили. Мы уже подмяли под себя больше половину крупной розницы в Беларуси, и сейчас начинаем на российский рынок выходить.
И на lsFusion уже больше 40 проектов, в том числе в России (некоторые достаточно публичные и их нельзя называть без согласования с их ИТ). Причем большинство этих проектов с более чем 500 одновременных пользователей и террабайтными базами (в которых, например, все чеки с детализацией онлайн сразу с распределением по партиям принимаются и это на паре серверов стоимостью 10к максимум). Собственно проектов всего 40 потому как с мелочевкой как 1С пока предпочитаем не связываться, но зато стараемся брать проекты из разных областей (от ERP до BPM и ECM)

а хде финики?
в смысле то, что я там выше написал: описание проекта и т.п...
и хреново видать с розницей в Беларуси, что 40+ проектов - это половина рынка.
1С - мелочевка... ERP на ММК пилят... суровые у вас масштабы. Основные конкуренты, я так понимаю - SAP ?
А комменты читать на хабре - чур меня, не заставите в эту канализацию нырять.
Nitro_Junkieandy stмозги важнее, но не показатель "знаю много страшных слов", т.е. пробежался по 100500 технологиям по верхам и стал мегаспецом.
ps.: запаришся копать экскаватором, если ни разу до этого за рычагами не сидел.
Вы передергиваете. Я как раз и говорю что знание технологий - пыль. Умение думать makes difference.
Ну если вы не умеете учиться - то да запаришься. А если есть мозги, то можно легко обучиться чему угодно .
если вы все такие умные, то почему строем не ходите (с) не я
термин "легко обучиться" больше подходит как раз для "копать лопатой, не копать лопатой"
чему-то более серьезному легко не обучиться и с мегамозгом. Хотя копать ковшем экскаватора, как лопатой в рамках "побыстрому обучился" тоже можно... тяжко только. И хреновый результат.
...
Рейтинг: 0 / 0
Интересный взгляд на проблему сравнения
    #39852021
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_Junkie но это все равно на порядок медленнее, чем использовать индексы по двум полям
никакого "порядка" в разнице производительности здесь не будет.
...
Рейтинг: 0 / 0
Интересный взгляд на проблему сравнения
    #39852120
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andy st"Знают" они однозначно лучше. Иначе бы вы свою субд запилили, с блекджеком и т.п. И язык программирования свой тоже...

Точно также как Microsoft запилил бы свой поисковик, Google свою соцсеть, Facebook свой инстаграм, Фольксваген свой электромобиль и так далее.
andy stв смысле то, что я там выше написал: описание проекта и т.п...

А что вы там хотите увидеть? Я собственно уже написал про параметры. Описание технологии и сравнение - на сайте / хабре. Сделали быстро / бесшовно / под заказчика людьми без опыта в IT (кроме одного).
andy stи хреново видать с розницей в Беларуси, что 40+ проектов - это половина рынка.

Я специально уточнил крупной розницей. То есть топ-30 сетей.
andy st1С - мелочевка... ERP на ММК пилят... суровые у вас масштабы. Основные конкуренты, я так понимаю - SAP ?

Я не писал, что 1С не связывается с крупняками, я писал, что он связывается с мелочевкой. SAP нам такой же конкурент, как фольксваген эмбраеру, у нас фундаментально разные технологии. Хотя да мы оба "перевозим людей из точки А в точку Б".
andy stА комменты читать на хабре - чур меня, не заставите в эту канализацию нырять.

А здесь прямо сплошные интеллигенты и ни одного тролля.
andy stесли вы все такие умные, то почему строем не ходите (с) не я
термин "легко обучиться" больше подходит как раз для "копать лопатой, не копать лопатой"
чему-то более серьезному легко не обучиться и с мегамозгом. Хотя копать ковшем экскаватора, как лопатой в рамках "побыстрому обучился" тоже можно... тяжко только. И хреновый результат.
Ну я например легко обучаюсь, сверху приводил список недавних языков / технологий. Скажут завтра еще одну освою за пару дней, а через пару месяцев буду использовать ее эффективнее, чем человек с 10 летним опытом, но с ограниченными умственными способностями / кругозором.
...
Рейтинг: 0 / 0
Интересный взгляд на проблему сравнения
    #39852122
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvNitro_Junkie но это все равно на порядок медленнее, чем использовать индексы по двум полям
никакого "порядка" в разнице производительности здесь не будет.

Будет. Проверено. Собственно вам в примере из статьи надо будет пробежаться по 100к записям, а с двумя индексами по 1к записям.
...
Рейтинг: 0 / 0
Интересный взгляд на проблему сравнения
    #39852150
andy st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nitro_Junkieandy stв смысле то, что я там выше написал: описание проекта и т.п...

А что вы там хотите увидеть? Я собственно уже написал про параметры. Описание технологии и сравнение - на сайте / хабре. Сделали быстро / бесшовно / под заказчика людьми без опыта в IT (кроме одного).

Что было, что стало, какие затраты времени/денег. Технические подробности систем. Восхищенные отзывы пользователей... и всё в статье тут или на том же хабре. Дабы можно было проникнуться величием.
"..людьми без опыта в IT..." уже проходили. купил фотоаппарат - фотограф, купил лопату - строитель, купил скальпель - хирург... с соотв. последствиями.

Nitro_Junkieandy stА комменты читать на хабре - чур меня, не заставите в эту канализацию нырять.

А здесь прямо сплошные интеллигенты и ни одного тролля.

контингент адекватнее
Nitro_Junkieandy stесли вы все такие умные, то почему строем не ходите (с) не я
термин "легко обучиться" больше подходит как раз для "копать лопатой, не копать лопатой"
чему-то более серьезному легко не обучиться и с мегамозгом. Хотя копать ковшем экскаватора, как лопатой в рамках "побыстрому обучился" тоже можно... тяжко только. И хреновый результат.
Ну я например легко обучаюсь, сверху приводил список недавних языков / технологий. Скажут завтра еще одну освою за пару дней, а через пару месяцев буду использовать ее эффективнее, чем человек с 10 летним опытом, но с ограниченными умственными способностями / кругозором.
наверно хорошо быть таким оптимистом, но в данном случае "можно нинада"?
слишком дохрена уже таких "...завтра еще одну освою за пару дней, а через пару месяцев буду использовать ее эффективнее...", которых через 2.5 месяца просят свалить, ибо кругозором работу делать сложно, а серьезных знаний не насобиралось.
...
Рейтинг: 0 / 0
Интересный взгляд на проблему сравнения
    #39852184
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andy stЧто было, что стало, какие затраты времени/денег. Технические подробности систем. Восхищенные отзывы пользователей... и всё в статье тут или на том же хабре. Дабы можно было проникнуться величием.

А вы поверите? Такого маркетинг буллшита каждый вендор тоннами генерит. Эффект гербалайф, как я его называю.
andy st"..людьми без опыта в IT..." уже проходили. купил фотоаппарат - фотограф, купил лопату - строитель, купил скальпель - хирург... с соотв. последствиями.

Ну все вроде работает, по несколько задач в день закрывается этими же людьми в FMCG рознице с глубиной автоматизации - глубже некуда. Но вы же все равно не поверите.
andy stконтингент адекватнее

Да прям таки. Особенно по второму комменту темы заметно.
andy stслишком дохрена уже таких "...завтра еще одну освою за пару дней, а через пару месяцев буду использовать ее эффективнее...", которых через 2.5 месяца просят свалить, ибо кругозором работу делать сложно, а серьезных знаний не насобиралось.
Ну или платформа делает все за вас. В любом случае пока проблем таких не возникало.
...
Рейтинг: 0 / 0
Интересный взгляд на проблему сравнения
    #39852202
andy st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nitro_Junkieandy stЧто было, что стало, какие затраты времени/денег. Технические подробности систем. Восхищенные отзывы пользователей... и всё в статье тут или на том же хабре. Дабы можно было проникнуться величием.

А вы поверите? Такого маркетинг буллшита каждый вендор тоннами генерит. Эффект гербалайф, как я его называю.

А такого и не надо. Надо технические подробности. Типа: крутилось на фокспро, сервер на pentium 2, 1 гиг памяти. Всё работало чётко, но мы качественно обработали барина и запустили аналог на ..., сервер на xeon phi 7210... на пиках тормозит...
:)
Было, проблемы, причины, принятое решение, обоснование, внедрение, результаты.
И без рукалицо-буллшита, как в сравнениях на сайте, и чтобы было читать приятно.
Nitro_Junkieandy st"..людьми без опыта в IT..." уже проходили. купил фотоаппарат - фотограф, купил лопату - строитель, купил скальпель - хирург... с соотв. последствиями.

Ну все вроде работает, по несколько задач в день закрывается этими же людьми в FMCG рознице с глубиной автоматизации - глубже некуда. Но вы же все равно не поверите.

Пишите статью, подумаю. Пока выглядит как очередная наколенная поделка с претензией на мировое господство.
Nitro_Junkieandy stконтингент адекватнее

Да прям таки. Особенно по второму комменту темы заметно.

Есть такой хабр-эффект, а есть еще антихабр-эффект.
Это - второе.
Nitro_Junkieandy stслишком дохрена уже таких "...завтра еще одну освою за пару дней, а через пару месяцев буду использовать ее эффективнее...", которых через 2.5 месяца просят свалить, ибо кругозором работу делать сложно, а серьезных знаний не насобиралось.
Ну или платформа делает все за вас. В любом случае пока проблем таких не возникало.
С ростом сложности проектов будет всё сложнее и сложнее убеждать заказчика в ненужности различных фишек, которые он где-то видел и хотел бы видеть у себя. А как быть, если платформу такое делать не научили заранее...
...
Рейтинг: 0 / 0
Интересный взгляд на проблему сравнения
    #39852710
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_JunkieБудет. Проверено. Собственно вам в примере из статьи надо будет пробежаться по 100к записям, а с двумя индексами по 1к записям.
я проверил. Firebird 3.
При абсолютном соответствии тесту, оптимизатор взял индексы только AD и BD, точно так же как PostgreSQL.
Select Expression
-> Aggregate
-> Filter
-> Table "MYTABLE" Access By ID
-> Bitmap Or
-> Bitmap
-> Index "AD" Range Scan (partial match: 1/2)
-> Bitmap
-> Index "BD" Range Scan (partial match: 1/2)

Execute time = 1s 420ms
Reads from disk to cache = 128 438
Fetches from cache = 327 305

Выполним запрос, который "ДНФ":
Тут да, план использует все 4 индекса
Select Expression
-> Aggregate
-> Filter
-> Table "MYTABLE" Access By ID
-> Bitmap Or
-> Bitmap Or
-> Bitmap Or
-> Bitmap
-> Index "AC" Range Scan (full match)
-> Bitmap
-> Index "BC" Range Scan (full match)
-> Bitmap
-> Index "AD" Range Scan (full match)
-> Bitmap
-> Index "BD" Range Scan (full match)

Execute time = 47ms
Reads from disk to cache = 4 084
Fetches from cache = 7 731

Быстрее? Намного! Однако, запрос "прикручен" к использованию этих самых композитных индексов.

Теперь убираем эти 4 композитных индекса, и строим 4 отдельных индекса по каждому столбцу (по 1 столбцу).
Типа "create index bya on mytable(a)" ...
План первого запроса
Select Expression
-> Aggregate
-> Filter
-> Table "MYTABLE" Access By ID
-> Bitmap And
-> Bitmap Or
-> Bitmap
-> Index "BYA" Range Scan (full match)
-> Bitmap
-> Index "BYB" Range Scan (full match)
-> Bitmap Or
-> Bitmap
-> Index "BYC" Range Scan (full match)
-> Bitmap
-> Index "BYD" Range Scan (full match)

Результат:
Execute time = 109ms
Reads from disk to cache = 4 575
Fetches from cache = 8 222

Запрос ДНФ, с такими индексами использует некоторые индексы лишний раз
Select Expression
-> Aggregate
-> Filter
-> Table "MYTABLE" Access By ID
-> Bitmap Or
-> Bitmap Or
-> Bitmap Or
-> Bitmap And
-> Bitmap
-> Index "BYC" Range Scan (full match)
-> Bitmap
-> Index "BYA" Range Scan (full match)
-> Bitmap And
-> Bitmap
-> Index "BYC" Range Scan (full match)
-> Bitmap
-> Index "BYB" Range Scan (full match)
-> Bitmap And
-> Bitmap
-> Index "BYD" Range Scan (full match)
-> Bitmap
-> Index "BYA" Range Scan (full match)
-> Bitmap And
-> Bitmap
-> Index "BYD" Range Scan (full match)
-> Bitmap
-> Index "BYB" Range Scan (full match)

Execute time = 141ms
Reads from disk to cache = 4 575
Fetches from cache = 8 775

получилось на 41% дольше, чем исходный запрос (понятно почему, лишние битмапы и их слияние).

Я напомню ваше высказывание:
"но это все равно на порядок медленнее, чем использовать индексы по двум полям"
Получается наоборот - 4 отдельных индекса по одиночным столбцам - на порядок быстрее чем 2 индекса по двум полям,
и в 2 раза медленнее чем 4 индекса по двум полям при весьма выкрученом запросе (ДНФ).
Так что в общем случае надо бы строить именно 4 отдельных одиночных индекса (и не крутить запрос), а не 4 композита, как привиделось автору статьи.
...
Рейтинг: 0 / 0
Интересный взгляд на проблему сравнения
    #39852724
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У вас как-то очень малая разница в reads / fetches. Тока что еще раз протестил на PostgreSQL с одиночными индексами:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
"Aggregate  (cost=21166.32..21166.33 rows=1 width=8) (actual time=87.265..87.266 rows=1 loops=1)"
"  Output: count(*)"
"  Buffers: shared hit=4885"
"  ->  Bitmap Heap Scan on public.mytable  (cost=7599.68..21155.90 rows=4166 width=0) (actual time=80.274..86.811 rows=3890 loops=1)"
"        Recheck Cond: (((mytable.c = 3) OR (mytable.d = 4)) AND ((mytable.a = 1) OR (mytable.b = 2)))"
"        Heap Blocks: exact=3782"
"        Buffers: shared hit=4885"
"        ->  BitmapAnd  (cost=7599.68..7599.68 rows=4209 width=0) (actual time=78.628..78.628 rows=0 loops=1)"
"              Buffers: shared hit=1103"
"              ->  BitmapOr  (cost=3796.47..3796.47 rows=205002 width=0) (actual time=42.314..42.314 rows=0 loops=1)"
"                    Buffers: shared hit=551"
"                    ->  Bitmap Index Scan on c  (cost=0.00..1856.94 rows=100334 width=0) (actual time=30.602..30.602 rows=99580 loops=1)"
"                          Index Cond: (mytable.c = 3)"
"                          Buffers: shared hit=275"
"                    ->  Bitmap Index Scan on d  (cost=0.00..1937.44 rows=104668 width=0) (actual time=11.707..11.707 rows=99981 loops=1)"
"                          Index Cond: (mytable.d = 4)"
"                          Buffers: shared hit=276"
"              ->  BitmapOr  (cost=3802.97..3802.97 rows=205335 width=0) (actual time=30.455..30.455 rows=0 loops=1)"
"                    Buffers: shared hit=552"
"                    ->  Bitmap Index Scan on a  (cost=0.00..1937.44 rows=104668 width=0) (actual time=17.524..17.524 rows=99931 loops=1)"
"                          Index Cond: (mytable.a = 1)"
"                          Buffers: shared hit=276"
"                    ->  Bitmap Index Scan on b  (cost=0.00..1863.44 rows=100667 width=0) (actual time=12.923..12.923 rows=99923 loops=1)"
"                          Index Cond: (mytable.b = 2)"
"                          Buffers: shared hit=276"
"Planning Time: 0.240 ms"
"Execution Time: 87.358 ms"



С двойными индексами:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
"Aggregate  (cost=13454.71..13454.72 rows=1 width=8) (actual time=8.351..8.352 rows=1 loops=1)"
"  Output: count(*)"
"  Buffers: shared hit=3804"
"  ->  Bitmap Heap Scan on public.mytable  (cost=99.04..13444.41 rows=4118 width=0) (actual time=1.440..7.945 rows=3890 loops=1)"
"        Recheck Cond: (((mytable.a = 1) AND (mytable.c = 3)) OR ((mytable.b = 2) AND (mytable.c = 3)) OR ((mytable.a = 1) AND (mytable.d = 4)) OR ((mytable.b = 2) AND (mytable.d = 4)))"
"        Heap Blocks: exact=3782"
"        Buffers: shared hit=3804"
"        ->  BitmapOr  (cost=99.04..99.04 rows=4119 width=0) (actual time=0.897..0.897 rows=0 loops=1)"
"              Buffers: shared hit=22"
"              ->  Bitmap Index Scan on ac  (cost=0.00..21.59 rows=916 width=0) (actual time=0.223..0.223 rows=998 loops=1)"
"                    Index Cond: ((mytable.a = 1) AND (mytable.c = 3))"
"                    Buffers: shared hit=6"
"              ->  Bitmap Index Scan on bc  (cost=0.00..22.11 rows=967 width=0) (actual time=0.211..0.211 rows=980 loops=1)"
"                    Index Cond: ((mytable.b = 2) AND (mytable.c = 3))"
"                    Buffers: shared hit=5"
"              ->  Bitmap Index Scan on ad  (cost=0.00..23.30 rows=1087 width=0) (actual time=0.136..0.136 rows=963 loops=1)"
"                    Index Cond: ((mytable.a = 1) AND (mytable.d = 4))"
"                    Buffers: shared hit=5"
"              ->  Bitmap Index Scan on bd  (cost=0.00..27.91 rows=1148 width=0) (actual time=0.325..0.325 rows=978 loops=1)"
"                    Index Cond: ((mytable.b = 2) AND (mytable.d = 4))"
"                    Buffers: shared hit=6"
"Planning Time: 0.209 ms"
"Execution Time: 8.434 ms"



Разница 10 раз, а план точно такой же как в Firebird. И разница в Buffers и actual rows адекватная. Вы точно на тех же данных тестировали?
...
Рейтинг: 0 / 0
Интересный взгляд на проблему сравнения
    #39852735
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv,

Хотя тут скорее вопрос почему у вас Firebird на ДНФ запросе так тупит. А можно более детальный план?
...
Рейтинг: 0 / 0
Интересный взгляд на проблему сравнения
    #39852739
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_Junkie,

в тесте было 10млн записей, так? Я ошибся на -1 запись, думаю это несущественно.
У базы размер страницы 4к, кэш 2048 страниц, данные таблицы:
MYTABLE (139)
Primary pointer page: 336, Index root page: 337
Total formats: 1, used formats: 1
Average record length: 41.87, total records: 9999999
Average version length: 0.00, total versions: 0, max versions: 0
Average fragment length: 0.00, total fragments: 0, max fragments: 0
Average unpacked length: 426.00, compression ratio: 10.17
Pointer pages: 253, data page slots: 204064
Data pages: 204064, average fill: 71%
Primary pages: 204064, secondary pages: 0, swept pages: 0
Empty pages: 3, full pages: 204060
Fill distribution:
0 - 19% = 3
20 - 39% = 0
40 - 59% = 1
60 - 79% = 204060
80 - 99% = 0


Я не знаю, почему у PG на одиночных индексах настолько хуже. У ФБ разница в 2 раза (между обычным запросом и одиночными индексами и ДНФ запросом с композитами).
...
Рейтинг: 0 / 0
Интересный взгляд на проблему сравнения
    #39852770
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvNitro_Junkie,

в тесте было 10млн записей, так? Я ошибся на -1 запись, думаю это несущественно.
У базы размер страницы 4к, кэш 2048 страниц, данные таблицы:
MYTABLE (139)
Primary pointer page: 336, Index root page: 337
Total formats: 1, used formats: 1
Average record length: 41.87, total records: 9999999
Average version length: 0.00, total versions: 0, max versions: 0
Average fragment length: 0.00, total fragments: 0, max fragments: 0
Average unpacked length: 426.00, compression ratio: 10.17
Pointer pages: 253, data page slots: 204064
Data pages: 204064, average fill: 71%
Primary pages: 204064, secondary pages: 0, swept pages: 0
Empty pages: 3, full pages: 204060
Fill distribution:
0 - 19% = 3
20 - 39% = 0
40 - 59% = 1
60 - 79% = 204060
80 - 99% = 0


Я не знаю, почему у PG на одиночных индексах настолько хуже. У ФБ разница в 2 раза (между обычным запросом и одиночными индексами и ДНФ запросом с композитами).

У PG на одиночных индексах как раз также как у Firebird. Вопрос почему у Firebird так тупит на двойных индексов (45 мс вместо 8мс у postgres).

Собственно в плане PG видно, что сами записи он находит за 0.8мс против 78мс с одиночными индексами. Но так как ему еще нужно достать данные, накидывается 12 мс. И разница становится всего 10 раз (иначе было бы 100 раз). На самом деле если уменьшить выборку , чтобы в результате было не 1000 а 10 записей (и СУБД перейдет на Index scan) или замедлить диск разница по идее будет еще больше. Сейчас проверю.
...
Рейтинг: 0 / 0
Интересный взгляд на проблему сравнения
    #39852791
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_Junkie,

Собственно да, если увеличить количество разновидностей в 10 раз (в скрипте генерации вместо *100, написать *1000), разница становится еще ощутимее:

Одиночные индексы.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
Aggregate  (cost=906.77..906.78 rows=1 width=8) (actual time=16.878..16.879 rows=1 loops=1)
  Output: count(*)
  Buffers: shared hit=166
  ->  Bitmap Heap Scan on public.mytable  (cost=748.67..906.67 rows=40 width=0) (actual time=16.728..16.863 rows=46 loops=1)
        Recheck Cond: (((mytable.a = 1) OR (mytable.b = 2)) AND ((mytable.c = 3) OR (mytable.d = 4)))
        Heap Blocks: exact=46
        Buffers: shared hit=166
        ->  BitmapAnd  (cost=748.67..748.67 rows=40 width=0) (actual time=16.524..16.524 rows=0 loops=1)
              Buffers: shared hit=120
              ->  BitmapOr  (cost=374.15..374.15 rows=19901 width=0) (actual time=7.290..7.290 rows=0 loops=1)
                    Buffers: shared hit=60
                    ->  Bitmap Index Scan on a  (cost=0.00..187.02 rows=9945 width=0) (actual time=3.577..3.577 rows=10083 loops=1)
                          Index Cond: (mytable.a = 1)
                          Buffers: shared hit=30
                    ->  Bitmap Index Scan on b  (cost=0.00..187.11 rows=9956 width=0) (actual time=3.709..3.709 rows=9963 loops=1)
                          Index Cond: (mytable.b = 2)
                          Buffers: shared hit=30
              ->  BitmapOr  (cost=374.27..374.27 rows=19918 width=0) (actual time=7.196..7.196 rows=0 loops=1)
                    Buffers: shared hit=60
                    ->  Bitmap Index Scan on c  (cost=0.00..187.17 rows=9965 width=0) (actual time=3.748..3.748 rows=9915 loops=1)
                          Index Cond: (mytable.c = 3)
                          Buffers: shared hit=30
                    ->  Bitmap Index Scan on d  (cost=0.00..187.08 rows=9953 width=0) (actual time=3.444..3.445 rows=9945 loops=1)
                          Index Cond: (mytable.d = 4)
                          Buffers: shared hit=30
Planning Time: 0.206 ms
Execution Time: 16.949 ms



Двойные индексы:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Aggregate  (cost=176.68..176.69 rows=1 width=8) (actual time=0.334..0.335 rows=1 loops=1)	
  Output: count(*)	
  Buffers: shared hit=58	
  ->  Bitmap Heap Scan on public.mytable  (cost=18.18..176.58 rows=40 width=0) (actual time=0.161..0.315 rows=46 loops=1)	
        Recheck Cond: (((mytable.a = 1) AND (mytable.c = 3)) OR ((mytable.b = 2) AND (mytable.c = 3)) OR ((mytable.a = 1) AND (mytable.d = 4)) OR ((mytable.b = 2) AND (mytable.d = 4)))	
        Heap Blocks: exact=46	
        Buffers: shared hit=58	
        ->  BitmapOr  (cost=18.18..18.18 rows=40 width=0) (actual time=0.138..0.138 rows=0 loops=1)	
              Buffers: shared hit=12	
              ->  Bitmap Index Scan on ac  (cost=0.00..4.53 rows=10 width=0) (actual time=0.039..0.040 rows=11 loops=1)	
                    Index Cond: ((mytable.a = 1) AND (mytable.c = 3))	
                    Buffers: shared hit=3	
              ->  Bitmap Index Scan on bc  (cost=0.00..4.53 rows=10 width=0) (actual time=0.023..0.023 rows=10 loops=1)	
                    Index Cond: ((mytable.b = 2) AND (mytable.c = 3))	
                    Buffers: shared hit=3	
              ->  Bitmap Index Scan on ad  (cost=0.00..4.53 rows=10 width=0) (actual time=0.057..0.057 rows=11 loops=1)	
                    Index Cond: ((mytable.a = 1) AND (mytable.d = 4))	
                    Buffers: shared hit=3	
              ->  Bitmap Index Scan on bd  (cost=0.00..4.53 rows=10 width=0) (actual time=0.016..0.016 rows=14 loops=1)	
                    Index Cond: ((mytable.b = 2) AND (mytable.d = 4))	
                    Buffers: shared hit=3	
Planning Time: 0.363 ms	
Execution Time: 0.410 ms	



То есть в 32 раза разница.

А в Firebird есть планы по каждой вершине с количеством рядов и временем выполнения? Можете сюда скинуть?
...
Рейтинг: 0 / 0
Интересный взгляд на проблему сравнения
    #39853050
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_JunkieА в Firebird есть планы по каждой вершине с количеством рядов и временем выполнения?
нет такого (некоторые цифры для плана есть только в тестовых сборках). и гистограмм в индексах тоже нет.
Кроме того, в ИБ и ФБ план вычисляется только на этапе prepare, до выполнения запроса.
...
Рейтинг: 0 / 0
Интересный взгляд на проблему сравнения
    #39854422
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_JunkieСимонов ДенисЕсли делаешь сразу под несколько СУБД что-то сложное, то скорее всего нормально не будет работать ни в одной.

Вообще статья как раз про это, и про то как обходить проблемы, чтобы система нормально работала на всех СУБД.Только при этом она работает только поверх Постгрес....
...
Рейтинг: 0 / 0
Интересный взгляд на проблему сравнения
    #39854468
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglNitro_Junkieпропущено...


Вообще статья как раз про это, и про то как обходить проблемы, чтобы система нормально работала на всех СУБД.Только при этом она работает только поверх Постгрес....

Нет, там есть адаптеры и под MS SQL и под Oracle. Но пока только в коммерческой версии.
...
Рейтинг: 0 / 0
Интересный взгляд на проблему сравнения
    #39856202
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_Junkie
Вообще в современном мире где пять лет назад никто не слышал про React и NoSQL, а технологии меняются раз в 3 года, умение разбираться в них по сути единственный важный навык программиста. И человек, который не умеет этого делать а сфокусирован на конкретных технологиях - херовый программист.

Я например в резюме на предыдущий опыт вообще не смотрю, потому как хорошо знаю, что человек с мозгами вообще без опыта в технологии через 3 месяца может быть гораздо полезнее на проекте, чем человек с 10+ лет опыта, который не умеет систематизировать информацию и составлять общую картину. И бизнесу нужны люди умеющие решать проблемы, а не с длинным резюме .

т.е. не смотрим ни на опыт, ни на знания, а только в глаза - видим мозг и понимаем, что "этот решит"
...
Рейтинг: 0 / 0
Интересный взгляд на проблему сравнения
    #39856224
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг ХупинNitro_JunkieВообще в современном мире где пять лет назад никто не слышал про React и NoSQL, а технологии меняются раз в 3 года, умение разбираться в них по сути единственный важный навык программиста. И человек, который не умеет этого делать а сфокусирован на конкретных технологиях - херовый программист.

Я например в резюме на предыдущий опыт вообще не смотрю, потому как хорошо знаю, что человек с мозгами вообще без опыта в технологии через 3 месяца может быть гораздо полезнее на проекте, чем человек с 10+ лет опыта, который не умеет систематизировать информацию и составлять общую картину. И бизнесу нужны люди умеющие решать проблемы, а не с длинным резюме .

т.е. не смотрим ни на опыт, ни на знания, а только в глаза - видим мозг и понимаем, что "этот решит"

Ну не совсем в глаза, все-таки общение, тестовые задания и т.п. Но вообще в те же гуглы / фейсбуки также набирают, там всем наплевать на опыт и знания, не бодишоп же.
...
Рейтинг: 0 / 0
Интересный взгляд на проблему сравнения
    #39862964
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_JunkieРолг Хупинпропущено...


т.е. не смотрим ни на опыт, ни на знания, а только в глаза - видим мозг и понимаем, что "этот решит"

Ну не совсем в глаза, все-таки общение, тестовые задания и т.п. Но вообще в те же гуглы / фейсбуки также набирают, там всем наплевать на опыт и знания, не бодишоп же.

данунах... не чудите, нас могут читать молодые девелоперы с подвижной психикой
...
Рейтинг: 0 / 0
25 сообщений из 50, страница 2 из 2
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Интересный взгляд на проблему сравнения
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (0):
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]