[Ответить в тред] Ответить в тред

09/10/16 - Открыта доска /int/ - International, давайте расскажем о ней!
30/09/16 - BREAKING NEWS ШОК АБУ ПРОДАЛСЯ МЭЙЛУ (на самом деле нет)
25/09/16 - Персональное обращение Абу - СБОР ПОЖЕРТВОВАНИЙ НА ДВАЧ



Новые доски: /2d/ - Аниме/Беседка • /wwe/ - WorldWide Wrestling Universe • /ch/ - Чатики и конфочки • /int/ - International • /ruvn/ - Российские визуальные новеллы • Создай свою

[Назад][Обновить тред][Вниз][Каталог] [ Автообновление ] 515 | 35 | 209
Назад Вниз Каталог Обновить

Единый баз данных тред Аноним 05/05/16 Чтв 20:39:33  735299  
14624699738960.jpg (73Кб, 424x450)
Не нашел — создал. В треде рады всем: mysql, postgresql, oracle, microsoft sql server, mongodb, cassandra, elasticsearch, redis, и так далее. Делаем репликацию и партицирование, ебемся с конфигами, шлем нахуй студентов с их лабами по SQL.
Аноним 05/05/16 Чтв 20:46:28  735312
Был у кого-нибудь опыт использования Sequelize, Persistence.js или Node ORM в рабочих проектах? Какие подводные камни? Олсо посоветуйте годных книг по postgresql.
Аноним 05/05/16 Чтв 22:01:14  735394
>>735312
Юзал Sequelize в десятке проектов, лютейшая годнота. Для SQL баз ничего лучше нет. Для монго - Mongoose. Ещё слышал о Bookshelf, но не юзал.
Аноним 05/05/16 Чтв 22:45:50  735437
Чем по факту занимаются dba?
Аноним 05/05/16 Чтв 23:07:58  735454
>>735437
Бэкапы, откаты из бэкапов, откаты из дейли лога insert/update запросов, ручные вмешательства в БД самые разные, мониторинг производительности, тюнинг конфигов, выдача пиздюлей программистам в ряде случаев, переход на новую версию СУБД, иногда решение архитектурных вопросов совместно со всякими там архитекторами и погромистами. Зачастую работа со всем этим в контексте многосерверного кластера.
Аноним 05/05/16 Чтв 23:11:42  735459
>>735299 (OP)
за графовые базы кто пояснит? бэкапы, репликация, подводные камни.
Аноним 05/05/16 Чтв 23:40:47  735483
14624808479200.jpg (32Кб, 614x457)
Мне нужна БД для хранения всякой нереляционной фигни. Документная, короче.
- Синхронная как минимум, асинхронная как плюс.
- Транзакционная.
- Чтоб можно было быстро апдейтить поле у одного документа.
- Апдейт полей у нескольких документов по айдишникам.
- Апдейт полей у документов попадающих под кверю.
- Возможность хранить BLOB-ы.
- Кластеризаци/распределенность ибо документов будет не мало (от сотен тысяч до нескольких миллионов).
Сейчас юзаю Постгрес + Эластик.
Какие предложения? У Постгреса, вроде как, есть возможность хранить нереляционные данные, но я никогда не имел с этим дела.

Пик анрелейтед.
Аноним 05/05/16 Чтв 23:55:09  735489
14624817091510.png (312Кб, 2000x1341)
>>735299 (OP)
Поясните за Cassandra. В чём отличия от обычных SQL баз?
Аноним 06/05/16 Птн 00:23:20  735512
>>735483
В постгресе есть JSON тип и операторы к нему, но не факт, что твоя ORM реализует полную обертку к этим операторам, а это может стать причиной лютого говнокода. Хотя sqlalchemy, например, поддерживает более-менее json. А вот бенчмарк выборок: http://blog.2ndquadrant.com/jsonb-type-performance-postgresql-9-4/

В случае если документы являются основой проекта, код моделей будет легче поддерживать, если используешь mongodb, так как обертки к ней более явные.
Аноним 06/05/16 Птн 00:40:13  735519
>>735512
>говнонго
Нет. Хуета для хипсторов
Аноним 06/05/16 Птн 01:07:38  735560
>>735489
Эта вообще nosql база, там конечно есть язык запросов, но агрегаций и джойнов в нем нет. Используется в случаях, когда нужна быстрая запись, а быстрые и сложные выборки не нужны, пример такой ситуации сбор статистики или web-crawling.
Аноним 09/05/16 Пнд 20:33:37  738582
Аноны, помогите. В PostgreSQL нужно хранить разницу времени, которую я высчитываю на сервере.
Например:
8:13:55 + 10:0:5 + 20:0:0 = 38:14:0
Как мне хранить именно в таком формате (1244:40:43)?
Какой тип данных выбрать?
Аноним 09/05/16 Пнд 20:38:15  738585
>>738582
>Как мне хранить именно в таком формате
Зачем?

>Какой тип данных выбрать?
Число миллисекунд
Аноним 09/05/16 Пнд 20:43:08  738588
>>738585
>Зачем?
Просто мне нужно именно суммировать и отображать часы.

Ладно, возьму int.
Аноним 20/05/16 Птн 18:25:49  748572
Анон, купил себе мак, запустил виртуалку с виндой, которая была на прошлом ноутбуке, через Parallels, теперь пытаюсь из OS X подключиться к базе Oracle, как через веб интерфейс, так и через SQLDeveloper. Вроде бы соединение начинается, но до конца не может подключиться (в SQLDeveloper пишет "The Network Adapter could not establish the connection"), порты в брандмауэре открывал, но тщетно. Кто нибудь еще так извращался? как справились со своими девиациями?
Аноним 20/05/16 Птн 19:35:29  748640
>>748572
а оракл где крутится? на виртуалке?
мсье понимает толк в извращениях.
Аноним 20/05/16 Птн 20:04:48  748654
>>748572
Ставь линупс и не еби мозги
Аноним 20/05/16 Птн 22:41:39  748781
>>748640
Оракл в виртуалке, всё так
Аноним 21/05/16 Суб 01:36:37  748885
>>735437
dba не нужен.
Аноним 21/05/16 Суб 05:49:27  748975
>>748781
Не еби себе мозг.
поставь буткамп, затем нормальный виндовоз, сверху оракл и остальное чо хочешь.
sql develepor выбрось нахуй и поставь toad.

если хочешь таки ебаться с виртуалками, скачай с оракл.сом виртуальный
эпплаянс с уже установленным ораклом, это редхат на самом деле.

макось охуенная вещь для дизайнеров и иос-дрочинга, но не дб-дев.
Аноним 21/05/16 Суб 10:15:15  749044
>>748572
1) Ставь DOCKER
2) Качай образ https://hub.docker.com/r/wnameless/oracle-xe-11g/
Аноним 21/05/16 Суб 16:12:48  749361
Посоны, ткните номос в мануал для даунов который научит меня получать полезную информацию из выхлопа explain и explain analyze.
Аноним 24/05/16 Втр 03:58:43  752360
14640515238760.jpg (71Кб, 837x723)
>>735483
Для братишки только самое сладкое!
https://ru.wikipedia.org/wiki/IBM_Notes
Аноним 24/05/16 Втр 06:35:24  752384
>>748572
телнетом в порт виртуалки удаётся достучаться?
Аноним 24/05/16 Втр 11:03:05  752501
Монганы, почистил базу записей старше последнего месяца, скриптом от вендора. Монга вроде очистилась, но создала кучу файлов, и место на диске не освободилось. Кто сталкивался, что делать?
Аноним 24/05/16 Втр 16:23:52  752743
>>752501
MySQL, таблицы с типом "MEMORY".
Аноним 24/05/16 Втр 21:21:07  753014
Сап, поясните , подскажите где почитать за создание бд, а именно какие таблицы какие поля в таблице, ключи и тп, в запросы вкатился изи, а в архитектуру вобще не могу
Аноним 25/05/16 Срд 23:38:53  754121
Ньюфаг вкатился в тред. Так как искал этот тред два года. Нет конечно не два, но вы поняли.
В общем я нихуя не программист, я блядский инженер, да даже сейчас и не инженер, а техник. В общем занимаюсь востановлением и мелкой проектировкой электроники. Но не суть.
Есть пара вопросов:
Что нужно знать Что бы быть админом oracle sql?
С чего вообще начинать изучение? Готов курить литературу на английском. Если тут есть админы то прошу захуячти мне фак. Я очень прошу, вы мне так сильно поможите. Умоляю антоши.
буду бампать свой вопрос пока не заебу вас.
Аноним 26/05/16 Чтв 06:44:51  754287
>>754121
Вверх ребята, вверх.
Аноним 26/05/16 Чтв 15:14:33  754549
>>735512
В мускуль 57 тоже json завезли, даже амахон поддерживает.
Аноним 30/05/16 Пнд 19:30:04  757762
>>754121
Бамп.
Аноним 30/05/16 Пнд 20:01:49  757790
Dba боги не чтото не общительны
Аноним 30/05/16 Пнд 20:15:51  757800
сап дбасы
как вам sqlite3?
Аноним 30/05/16 Пнд 22:59:07  757959
>>757800
Лучшая встраиваемая реляционная база данных.
Аноним 30/05/16 Пнд 23:29:04  757992
>>757959
Двачую этого.
Намедни запилил в прожект.
Ахуенная вещь ящитаю.
Аноним 04/06/16 Суб 11:46:37  761147
>>735299 (OP)
Sup!
Есть у кого готовые базы MS access?
Аноним 04/06/16 Суб 12:00:25  761155
и все-таки, кластерный индекс в MS~ - это отдельный объект базы данных, либо все-таки функция (способ) упорядочивания данных в физической коллекции?
если да, то как выполнятор запроса узнает, нужно ли обращаться к индексу для поиска данных, либо перебирать все существующие строки (в случае кучи)? это все хранится в метаданных (мб неправильный термин) таблиц или вью, или что-то вроде внутренней реализации if exists (select superindex from sys_objects)?
не DBA
Аноним 04/06/16 Суб 18:00:50  761369
14650524511230.png (4Кб, 631x95)
Ананасы, прошу помощи с SQL-запросом. Имеется две таблицы пикрелейтед. Как поставить условие, чтобы выводило всех преподов, а не только преподов с id_дисциплины = 5?
Аноним 04/06/16 Суб 18:31:50  761390
>>761369
Разобрался. >_<
Аноним 04/06/16 Суб 21:38:33  761640
>>757762
оставь мыльце, накидаю тебе фак, если надо еще
Аноним 08/06/16 Срд 12:58:45  764474
>>761155
бамп, или хотя бы подскажите литературу по MSSQL годную (для уровня быдлокодер), где этот вопрос можно осветить для себя
Аноним 08/06/16 Срд 13:05:32  764479
>>761147
Есть.
Аноним 08/06/16 Срд 17:47:43  764746
>>764479
Когда я создаю курсор с селектом без лимита на большую базу, данные как-то кешируются или курсор сразу все в себе имеет? Sqlite.
Аноним 08/06/16 Срд 17:48:02  764748
>>764746
Случайно реплай.
Аноним 08/06/16 Срд 17:51:16  764752
>>764746
даже на википедии написали, а ты найти не можешь
Cursors allocate resources on the server, such as locks, packages, processes, and temporary storage. For example, Microsoft SQL Server implements cursors by creating a temporary table and populating it with the query's result set. If a cursor is not properly closed (deallocated), the resources will not be freed until the SQL session (connection) itself is closed. This wasting of resources on the server can lead to performance degradations and failures.
Аноним 08/06/16 Срд 17:55:41  764758
>>764752
Не вижу где говорится про кеширование результатов.
Аноним 08/06/16 Срд 18:06:13  764765
>>764758

> For example, Microsoft SQL Server implements cursors by creating a temporary table and populating it with the query's result set.
Аноним 08/06/16 Срд 18:36:51  764805
>>764765
Sqlite. И что если там база большая, на полный селект он ее всю во временную скопирует?
Аноним 08/06/16 Срд 18:45:28  764816
>>764805
такое пишут
http://stackoverflow.com/questions/10376691/how-does-a-sqlite-cursor-work-internally
Аноним 08/06/16 Срд 18:50:00  764817
>>764816
Спасибо. Вероятно все результаты сразу будут в памяти.
Аноним 08/06/16 Срд 19:23:07  764843
>>764817
на самом деле, не логично при каждом проходе энумеровать запрос заново, даже если не строить каждый раз план выполнения
Аноним 10/06/16 Птн 16:04:16  766344
Нужна помощь, анон, в sql нихуя не умею на данный момент.
В бд есть две таблички:
1. Customer
Id |Name
------------------
1 |Ivanov
2 |Petrov
3 |Sidorov

2. CustomerInfo
Id |Field |Value
----------------------------------------
1 |FirstName |Ivan
1 |Phone |123456789
2 |FirstName |Peter
2 |Phone |987654321
3 |FirstName |Sidor

Таблички связаны по полю Id

Требуется написать SQL-запрос, возвращающий следующий резултат

ID |FirstName |Name |Phone
-----------------------------------------------
1 |Ivan |Ivanov |123456789
2 |Peter |Petrov |987654321
3 |Sidor |Sidorov |
Аноним 10/06/16 Птн 16:12:49  766352
>>766344
unpivot
Аноним 10/06/16 Птн 16:14:21  766353
>>766352
или pivot? ну короче, одно из двух
Аноним 11/06/16 Суб 12:16:09  766852
ребят, есть у кого-нить пулеметные курсы по SSRS? желательно галопом и по всему базовому. еще желательней на росеянском
Аноним 11/06/16 Суб 15:11:39  766992
Скажите если у меня есть Очень Большая Таблица и естественно на ней есть индекс и используя один из тысяч специфических конструктов я выделяю записи с 1000000 по 1000010, то эти десять записей сразу же загрузятся используя индекс или чего-то там еще будет сканироваться по всей таблице? Если первое то почему некоторые утверждают что это не так, а если второе - то почему так плохо зделали, тупо?
Аноним 11/06/16 Суб 16:06:33  767034
>>766992
> индекс
> будет сканироваться по всей таблице
ты понимаешь, о чем пишешь?
Аноним 11/06/16 Суб 16:09:19  767037
>>767034
Безусловно.
Аноним 11/06/16 Суб 19:34:15  767222
>>766992
Чувак, я нихера не понял что ты сказал, но ты достучался до моего сердца.
https://www.citusdata.com/blog/1872-joe-nelson/409-five-ways-paginate-postgres-basic-exotic
https://habrahabr.ru/post/301044/
Аноним 11/06/16 Суб 19:58:00  767256
>>767222
так он же не о пагинации вопрошал. насколько я понял, товарищу был важен знать механизм, как система отберет записи, находящиеся в ебенях таблицы, если план выполнения точно знает, что выбирать нужно именно их.
чи не?
Аноним 11/06/16 Суб 23:48:18  767452
>>766992

Допустим, у тебя индекс по полю ID. Если твой SELECT ищет по полю ID, то для поиска записей будет использован этот индекс. Если же использовалось дополнительно ещё какое-то поле, то будет произведен поиск среди записей, которые были найдены по индексу.

Насчет "загрузятся" - нет, не совсем. Сервер найдет записи, но не будет их загружать. Индекс, однако, может содержать определенные поля. То есть индекс по ID может дополнительно содержать копию данных из поля Login, и тогда SELECT [Login] FROM [Table] WHERE ID IN (1,2,5) вернёт тебе нужную информацию даже не читая конкретные записи, а прямо из индекса.
Аноним 12/06/16 Вск 00:00:18  767461
>>767222>>767256
Я читал вот эту статью
http://use-the-index-luke.com/no-offset
>offset instructs the databases skip the first N results of a query. However, the database must still fetch these rows from the disk and bring them in order before it can send the following ones.
WTF?

Кстати я в целом разделяю его аргументы, особенно про пагинацию на меняющихся данных, когда постоянно все куда то убегает - это просто пиздец. Но допустим что таблица у меня неизменна и я реально хочу выбрать с 1000000 по 1000010 элемент. Меня интересует вопрос на сколько это (не)эффективно.

Проиграл с колдунств в обсуждении статьи на хабре. Вся суть свитеропетушения. Самое дно разработки, хуже верстки.

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

Аноним 22/06/16 Срд 19:33:44  777351
Посоны, у меня тупой вопрос по SQL но надеюсь что вы сразу на хуй не пошлете.

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

Вопрос вот в чем: как сделать выборку по датам таким образом, что бы сгруппировав все записи по датам, поставить статус напротив каждой группы "встретились только местные" / "встретились не только местные" / "встретились только не местные".

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

Ниже код, выборки и задачи писал себе сам, я застрял на этапе "-- when players can't make full party and is it regular party or not?" с полной-неполной группой получилось разобраться, а вот определить статус группы нет:

/ Friendly Card Game Results:
During this past winter, a few friends got together every Wednesday night for a friendly game of cards. On some nights they'd play two games, but never the same game twice on the same night. The usual players were Spunky Sam, Marcimus, Winston, and Hopper. Sometimes, one of the friends couldn't make it, so there were only three players. But sometimes they'd call another friend to fill-in. In every game they played, the one with the hightest score was declared the winner. These are their results:
Created by: https://www.khanacademy.org/profile/brianduckworth
/

CREATE TABLE card_games(id INTEGER PRIMARY KEY AUTOINCREMENT,
date_played TEXT,
game_name TEXT,
player_name TEXT,
score INTEGER);

INSERT INTO card_games(date_played,game_name,player_name,score) VALUES ('2015/01/07','Rummy','Spunky Sam',226);
INSERT INTO card_games(date_played,game_name,player_name,score) VALUES ('2015/01/07','Rummy','Marcimus',418);
INSERT INTO card_games(date_played,game_name,player_name,score) VALUES ('2015/01/07','Rummy','Winston',523);
INSERT INTO card_games(date_played,game_name,player_name,score) VALUES ('2015/01/07','Rummy','Hopper',311);
INSERT INTO card_games(date_played,game_name,player_name,score) VALUES ('2015/01/14','Go Fish','Spunky Sam',7);
INSERT INTO card_games(date_played,game_name,player_name,score) VALUES ('2015/01/14','Go Fish','Marcimus',5);
INSERT INTO card_games(date_played,game_name,player_name,score) VALUES ('2015/01/14','Go Fish','Winston',4);
INSERT INTO card_games(date_played,game_name,player_name,score) VALUES ('2015/01/14','Go Fish','Hopper',10);
INSERT INTO card_games(date_played,game_name,player_name,score) VALUES ('2015/01/14','Crazy Eights','Spunky Sam',215);
INSERT INTO card_games(date_played,game_name,player_name,score) VALUES ('2015/01/14','Crazy Eights','Marcimus',167);
INSERT INTO card_games(date_played,game_name,player_name,score) VALUES ('2015/01/14','Crazy Eights','Winston',109);
INSERT INTO card_games(date_played,game_name,player_name,score) VALUES ('2015/01/14','Crazy Eights','Hopper',192);
INSERT INTO card_games(date_played,game_name,player_name,score) VALUES ('2015/01/21','Rummy','Spunky Sam',473);
INSERT INTO card_games(date_played,game_name,player_name,score) VALUES ('2015/01/21','Rummy','Marcimus',324);
INSERT INTO card_games(date_played,game_name,player_name,score) VALUES ('2015/01/21','Rummy','Hopper',516);
INSERT INTO card_games(date_played,game_name,player_name,score) VALUES ('2015/01/28','Crazy Eights','Spunky Sam',119);
INSERT INTO card_games(date_played,game_name,player_name,score) VALUES ('2015/01/28','Crazy Eights','Marcimus',212);
INSERT INTO card_games(date_played,game_name,player_name,score) VALUES ('2015/01/28','Crazy Eights','Purple Pi',314);
INSERT INTO card_games(date_played,game_name,player_name,score) VALUES ('2015/01/28','Crazy Eights','Hopper',252);
INSERT INTO card_games(date_played,game_name,player_name,score) VALUES ('2015/02/04','Go Fish','Spunky Sam',3);
INSERT INTO card_games(date_played,game_name,player_name,score) VALUES ('2015/02/04','Go Fish','Marcimus',11);
INSERT INTO card_games(date_played,game_name,player_name,score) VALUES ('2015/02/04','Go Fish','Winston',12);
INSERT INTO card_games(date_played,game_name,player_name,score) VALUES ('2015/02/04','Go Fish','Hopper',0);
INSERT INTO card_games(date_played,game_name,player_name,score) VALUES ('2015/02/04','Pitch','Spunky Sam',17);
INSERT INTO card_games(date_played,game_name,player_name,score) VALUES ('2015/02/04','Pitch','Marcimus',22);
INSERT INTO card_games(date_played,game_name,player_name,score) VALUES ('2015/02/04','Pitch','Winston',-3);
INSERT INTO card_games(date_played,game_name,player_name,score) VALUES ('2015/02/04','Pitch','Hopper',9);
INSERT INTO card_games(date_played,game_name,player_name,score) VALUES ('2015/02/11','Rummy','Amelia',525);
INSERT INTO card_games(date_played,game_name,player_name,score) VALUES ('2015/02/11','Rummy','Marcimus',419);
INSERT INTO card_games(date_played,game_name,player_name,score) VALUES ('2015/02/11','Rummy','Winston',316);
INSERT INTO card_games(date_played,game_name,player_name,score) VALUES ('2015/02/11','Rummy','Hopper',398);
INSERT INTO card_games(date_played,game_name,player_name,score) VALUES ('2015/02/18','Crazy Eights','Spunky Sam',119);
INSERT INTO card_games(date_played,game_name,player_name,score) VALUES ('2015/02/18','Crazy Eights','Marcimus',231);
INSERT INTO card_games(date_played,game_name,player_name,score) VALUES ('2015/02/18','Crazy Eights','Winston',153);
INSERT INTO card_games(date_played,game_name,player_name,score) VALUES ('2015/02/18','Crazy Eights','Hopper',175);
INSERT INTO card_games(date_played,game_name,player_name,score) VALUES ('2015/02/25','Pitch','Spunky Sam',12);
INSERT INTO card_games(date_played,game_name,player_name,score) VALUES ('2015/02/25','Pitch','Marcimus',6);
INSERT INTO card_games(date_played,game_name,player_name,score) VALUES ('2015/02/25','Pitch','Winston',21);
INSERT INTO card_games(date_played,game_name,player_name,score) VALUES ('2015/02/25','Go Fish','Spunky Sam',6);
INSERT INTO card_games(date_played,game_name,player_name,score) VALUES ('2015/02/25','Go Fish','Marcimus',7);
INSERT INTO card_games(date_played,game_name,player_name,score) VALUES ('2015/02/25','Go Fish','Winston',13);
INSERT INTO card_games(date_played,game_name,player_name,score) VALUES ('2015/03/04','Rummy','Spunky Sam',378);
INSERT INTO card_games(date_played,game_name,player_name,score) VALUES ('2015/03/04','Rummy','Marcimus',327);
INSERT INTO card_games(date_played,game_name,player_name,score) VALUES ('2015/03/04','Rummy','Winston',413);
INSERT INTO card_games(date_played,game_name,player_name,score) VALUES ('2015/03/04','Rummy','Hopper',517);
INSERT INTO card_games(date_played,game_name,player_name,score) VALUES ('2015/03/11','Pitch','Spunky Sam',-1);
INSERT INTO card_games(date_played,game_name,player_name,score) VALUES ('2015/03/11','Pitch','Marcimus',-5);
INSERT INTO card_games(date_played,game_name,player_name,score) VALUES ('2015/03/11','Pitch','Winston',7);
INSERT INTO card_games(date_played,game_name,player_name,score) VALUES ('2015/03/11','Pitch','Hopper',22);
INSERT INTO card_games(date_played,game_name,player_name,score) VALUES ('2015/03/18','Crazy Eights','Spunky Sam',91);
INSERT INTO card_games(date_played,game_name,player_name,score) VALUES ('2015/03/18','Crazy Eights','Marcimus',153);
INSERT INTO card_games(date_played,game_name,player_name,score) VALUES ('2015/03/18','Crazy Eights','Amelia',174);
INSERT INTO card_games(date_played,game_name,player_name,score) VALUES ('2015/03/18','Crazy Eights','Mr. Pink',216);
INSERT INTO card_games(date_played,game_name,player_name,score) VALUES ('2015/03/25','Rummy','Spunky Sam',416);
INSERT INTO card_games(date_played,game_name,player_name,score) VALUES ('2015/03/25','Rummy','Marcimus',505);
INSERT INTO card_games(date_played,game_name,player_name,score) VALUES ('2015/03/25','Rummy','Winston',397);
SELECT FROM card_games;

/

What are average, max, and min values in the data?
id (PK) INTEGER
date_played TEXT - total / per day
game_name TEXT - most popular / least popular
player_name TEXT - players per match / total most and least popular player
score INTEGER - per game / average
*/

--get player names
select player_name as 'player names' from card_games group by player_name;

-- determine and separate usual and unusual players
select player_name,
case
when player_name in ("Spunky Sam","Marcimus","Winston","Hopper")
then "Usual player"
else "Unusual player"
end as player_status
from card_games
group by player_name
order by player_status;

-- when players can't make full party and is it regular party or not?
select
game_name as game
,date_played as date
,count(player_name) as players

,case
when count(player_name) < 4 then "Not full party"
else "Full party"
end as "meeting status"

-- problem below - how to determine party status?
,case
when player_name in
("Amelia","Mr. Pink","Purple Pi")
then "Not regular party"
else "Regular party"
end as "party status"

from
card_games
group by
date_played
,game_name
order by
date_played;

-- how many times they call unusual player?
Аноним 22/06/16 Срд 19:43:43  777358
>>777351
тебе инсерты надо было обязательно включать, сучара?
я бы создал темптейбл с айдишниками правильных пацанят. далее общую выборку лефтджойнишь на временную таблицу: если нет записей с null - все свои, если все нулл - все левые, иначе - салат с мелкопорубленными огурцами
Аноним 22/06/16 Срд 19:53:58  777359
>>777351
Засунь это в sqlfiddle, не надо такие простыни пастить
Аноним 24/06/16 Птн 21:00:32  779010
> Мне удалось построить свою маленькую Exadata в Amazon cloud. Теперь этот проект называется Engineered System at home in cloud. Вы знаете, что даже у Oracle нет Engineered System in cloud? А у вас - будет. Как только я осилю оформление инструкции -)

> Стоимость построения - примерно $15. Эксплуатации - зависит от продолжительности.

> Прелесть по сравнению c решением на домашней виртуальной машине - у вас есть возможность получить много ресурсов. Немедленно. И заплатить за них смешные деньги. Посмотрите какие типы виртуальных машин можно получить. 32 vcpu, 244 Gb памяти.

> Она из самых замечательных возможностей - то что можно произвести настройку системы на одном типе инстанса (что дешевле), а потом изменить тип инстанса - получить много памяти и процессоров на короткое время теста - потом вернуть обратно.

> Можно долго бубнить о том как же сравнить текущую систему с тем что там в Amazon, что там vcpu - а можно сделать baseline test, дальше включить InMemory, дальше подключить Exadata Cell. Со своего ноутбука - вам не понадобиться ничего, кроме ssh и браузера. В Новосибирске, Красноярске или даже в Омске можно за выходные узнать о том, как работают все новомодные опции Oracle за, как мне кажется, разумные деньги

> http://dsvolk.blogspot.ru/2014/11/engineered-system-at-home-breaking-news.html
Аноним 26/06/16 Вск 01:42:50  779944
> postgresql 9.6 beta2

update most contrib extensions for parallel query
two fixes for pg_trgm (trigram) bugs
rewrite code to estimate join sizes for better performance
correct handling of argument and result datatypes for partial aggregation
fix lazy_scan_heap so that it won't mark pages all-frozen too soon
mark additional functions as parallel-unsafe
check PlaceHolderVars before pushing down a join in postgres_fdw
improve the situation for parallel query versus temp relations
don't generate parallel paths for rels with parallel-restricted outputs
make psql_crosstab plans more stable
finish loose ends for SQL ACCESS METHOD objects, including pg_dump
stop the executor if no more tuples can be sent from worker to leader
several pg_upgrade fixes to support new features
fix regression tests for phrase search
add new snapshot fields to serialize/deserialize functions
measure Bloom index signature-length reloption in bits, not words
many improvements to parallel regression tests
many documentation updates and clarifications
multiple translation updates for the docs
Аноним 26/06/16 Вск 16:03:46  780441
https://twitter.com/ModernSQL/status/747050205388877828
Аноним 27/06/16 Пнд 05:50:38  780928
Оракли - ацкая быдлятина.

Например, в 10g движок хавал селекты с /r/n в качестве перевода строки, но не хавал аналочиные апдейты. Т.е. селект и апдейт там парсился разным былокодом. Учитывая, что это говно написано на С/C++ я не удивлюсь, если там вообще используются разные библиотеки для работы со строками.

В общем да, если сравнивать СУБД с языками программирования, Оракли == С++.

Стал популярным случайно - Ларри спиздил недоделанные исходники из IBM-а и стал загонять их аж как вторую версию своей чудо-СУБД, а быдло поверило; за счет чего держится - не понятно, т.к. не обладает никакими преимуществами по сравнению с конкурентами и чуть ли не самый медленный; все от него плюются и только узкий круг ограниченных ораклисвиней, которые ничего кроме оракли не знают и не видели, кормятся опилками с распилов от неудачных внедрений и считают себя сука илитой.

И да, каждый ламерок, чинушка или олокомпьютерный свитер жаждет засунуть оракли куда только его волосатые рученки дотянутся, потому что где-то слышал, что оракли это круто. Где они все это слышат, я не знаю, как-то пора выжечь это место, чтобы зараза не распространялась.
Аноним 27/06/16 Пнд 08:17:42  780962
>>738588
INTERVAL
Аноним 27/06/16 Пнд 08:29:35  780970
>>780928
sql server вырвиглазный платформлок
informix мертв
db2 не нужон
freesoft - не имеет встроенных менеджеров очередей, готовых dbms_what_you_want и повышает шанс замены студента админа с кучей сертификатов школьником, умеющим ставить lamp. Ах да, специалистов нема.
Что там ещё?
Аноним 27/06/16 Пнд 09:04:06  780987
>>780970
че по mssql по существу-то?
Аноним 27/06/16 Пнд 10:25:35  781025
Анончики помогите с литературой по архитектуре создания бд
Аноним 27/06/16 Пнд 12:44:07  781126
>>781025
https://ru.wikipedia.org/wiki/%D0%92%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B2_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%B1%D0%B0%D0%B7_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85
Аноним 27/06/16 Пнд 12:46:48  781129
>>780987
Энжой йо тэмпдиби https://www.brentozar.com/archive/2014/07/oracle-terminology-sql-server-dba/
Аноним 29/06/16 Срд 19:32:35  783392
14672179556510.png (475Кб, 3508x2480)
Аноним 29/06/16 Срд 20:12:24  783436
>>783392
Indexes can speed up update and delete operations
Аноним 29/06/16 Срд 20:14:27  783444
Здравствуйте, ананасы! Я вообще базами почти никогда не пользовался, только ораклом на практике по бд, но теперь возникла необходимость создать ее для моего проекта на Qt. В общем, делаю я ежедневник и нужна мне база, чтобы там записи хранить и вытаскивать по нажатию кнопки. Подскажете с чего вообще начать?
Аноним 29/06/16 Срд 20:38:29  783492
>>783448
С проектирования.
Определения сущностей и связей между ними.
E-R моделирование.
Аноним 29/06/16 Срд 20:39:35  783495
>>783436
Что тебе не понравилось в этой фразе?
Аноним 29/06/16 Срд 20:41:01  783499
14672220612420.webm webm file (2457Кб, 470x360, 00:00:38)
>>783495
> Index
> speed up
> update
> delete
Аноним 29/06/16 Срд 20:42:03  783503
>>783444
SQLite бери.
Аноним 29/06/16 Срд 20:52:54  783511
>>783499
Что тебе не понравилось в этой фразе?
Аноним 29/06/16 Срд 20:54:51  783516
>>783511
Расскажи как индексация ускоряет update и delete.
Аноним 29/06/16 Срд 21:33:36  783571
>>783516
Рассказываю.
Чтобы что-то update или delete, это что-то нужно сначала найти. Если существует индекс, совместимый с условиями поиска, он будет использован. Если нет, будет full scan (полный перебор всей таблицы).
Аноним 29/06/16 Срд 21:40:27  783584
>>783571
А что с индексом будет после изменения таблицы?
Аноним 29/06/16 Срд 22:04:23  783619
>>783584
Если в результате изменения таблицы изменятся поля, учааствующие в индексе, то в индекс будут внесены изменения, соответствующие изменениям в таблице.
Аноним 29/06/16 Срд 22:07:11  783624
>>783619
> перестройка индекса
ЧТД
Аноним 29/06/16 Срд 22:25:26  783669
>>783619
при удалении записи изменения в структуре индекса произойдут гарантированно, nyet?
но, в любом случае, ты хочешь мне сказать, что издержки, связанные с перестроением индекса хотя бы в трети случаев соизмеримы с прибавкой скорости поиска записей?
Аноним 29/06/16 Срд 23:22:15  783765
>>783669
конечно
Аноним 29/06/16 Срд 23:24:21  783772
>>783624
Не путай изменение индекса с перестройкой индекса.

>>783669
Умница, ты ведь сам все знаешь.
Если у тебя таблица на 10 записей, то в индексах нет никакого смысла, разумеется.
Если у тебя таблица на 10 миллиардов записей, то издержки связанные с поддержанием индекса в актуальном состоянии будут незаметны на фоне увеличения скорости поиска.
Аноним 29/06/16 Срд 23:31:41  783785
Есть ли смысл объединять таблицы лайков разных сущностей в одну? И если объединять, можно ли задать динамический foreign key в зависимости от типа сущности?
Аноним 30/06/16 Чтв 00:06:33  783834
>>783785
Научись связно излагать свои мысли на родном языке.
Аноним 30/06/16 Чтв 00:10:17  783840
>>783834
Если ты не понял предельно точный вопрос, значит, ты слишком туп, чтобы на него ответить.
Аноним 30/06/16 Чтв 00:12:19  783843
>>783840
Я понял даже твоё несвязное бормотание.
Это не означает что учиться излагать мысли связно на родном языке тебе не нужно.
Аноним 30/06/16 Чтв 09:00:51  783973
>>783772
мой манямир порвался

>>783785
ключом может быть GUID, зачем придумывать какую-либо динамику?
Аноним 01/07/16 Птн 20:13:22  785434
>>735299 (OP)
Поясните мне следующие вопросы. Постараюсь изложить максимально внятно:
1. Нормально ли когда в документо-ориентированных базах мы в документ запихиваем максимум информации и в каждом документе дублируем одно по одному, вместо того чтоб сделать ссылку. Например, если у нас база товаров, и каждый товар описывается документом, то мы в каждый документ записывам всю инфу о прозиводителе типа там "Самсунг, корея, доллары", а не делаем ссылку на коллекцию с производителями.
2. Если нужен отклик 0,1-0,5 секунд для базы в миллион документов, каждый из которых содержт списки и весит по 100-200кб, справится ли MongoDB с таким? или же уже стоит смотреть в сторону изменения модели данных и использования key-value баз? Понятно что зависит от многих других факторов, но хотелось бы примерно узнать.
3. в реляционных базах можно делать вложенные запросы, типа SELECT ... from ... (SELECT ...),Можно ли подобное делать в документных, типа сделали выборку документов, потом из этой выборки делаем другую выборку и тд. И сразу вопрос про key-value, что там с операцией пересечения множеств? K1 -> S1, K2 -> S2 ... И вот я делаю выборку по этим ключам, но нужно пересечение S1 с S2 и т.д.
Аноним 01/07/16 Птн 22:29:38  785540
>>785513
Задавай свои вопросы.>>785434
>Нормально ли когда в документо-ориентированных базах
Нормально для документо-ориентированных недоБД.
Дело в том что в них буква C из аббревиатуры ACID означает только атомарность изменений на уровне одного объекта. Поэтому как только ты сделаешь куда-то линк, поддерживать его ты не сможешь и не сможешь поддерживать консистентность твоей базы данных. Поэтому кроме такого варианта - лепить все в один документ - вариантов просто нет.
Есть нереляционные БД с нормальной (и даже очень хорошей поддержкой транзакций и ACID, а не карикатуры на него), но для работы с ними тебе потребуется купить мейнфрейм. Кстати, они - вместе с качественно реализованными транзакциями и ACID - были задолго до реляционных - поинтересуйся в какой версии Oracle вообще транзакции появились.

> Если нужен отклик 0,1-0,5 секунд для базы в миллион документов
С этим справится PostgreSQL без проблем. Даже с дефолтными настройками, которые ему достались в память о тех временах когда 256 мегабайт RAM были непозволительной роскошью.

> справится ли MongoDB с таким?
Справится. Но будь готов к тому найдется ли твой документ или нет будет зависеть от фазы Луны - https://engineering.meteor.com/mongodb-queries-dont-always-return-all-matching-documents-654b6594a827#.s3ko3vfnx

Аноним 02/07/16 Суб 03:46:41  785645
>>785540
Исходя из твоего ответа, верноли я понял что всякие монги это всё хипстерская тема, которая работает нестабильно и жрет много памяти. И что лучше постараться обойтись традиционными реляционными средствами.
Аноним 02/07/16 Суб 04:12:22  785649
Подскажие тогда с задачей. Сырые данные выглядят следующим образом:
{id: N, data: [[25,10,1,52],[4,25],[10,52,81]]}
data - это список списков, каждый список может быть длиной от 1 до 1000, и самих этих списков может быть 1-100, но как правило всё в пределах 10-20. Вместо чисел строки.
Таких вот блоков может быть миллион и более. Запись производится редко, и ее скорость вообще неважна. А вот чтение нужно быстрое, запрос примерно выглядит так: дан набор чисел, например 25,4,52. Нужно выдать все id, для которых соответствующая data содежит эти числа. И нужны хорошие средства для сортировки результата, чтоб можно было писать свои нетривиальные функции (критерии) сортировки.
Изменится ли как-то задача, если data - это будет дерево.
Аноним 02/07/16 Суб 05:51:35  785659
>>785645
Да.
https://www.reddit.com/r/programming/comments/3dvzsl/why_you_should_never_ever_ever_use_mongodb/
Аноним 02/07/16 Суб 05:54:29  785660
>>785649
https://www.postgresql.org/docs/devel/static/ltree.html
https://www.postgresql.org/docs/devel/static/datatype-json.html
https://www.postgresql.org/docs/devel/static/arrays.html
Аноним 02/07/16 Суб 07:45:47  785673
14674347471450.jpg (32Кб, 604x340)
Что будет быстрее intersection результатов в key-value базе или join результатов в реляционной? И вообще в чем смысл key-value если оно из коробки если в реляционных?
Аноним 02/07/16 Суб 08:16:48  785686
>>785673
>в чем смысл key-value
хуяк-хуяк, не надо ничего знать, кидай щебень лопатой в монгу, хуяк-хуяк
Аноним 02/07/16 Суб 08:28:44  785688
Шалом.
Есть sql код, создающий бд. Какой нужен инструмент, программа, чтобы записать с помощью этого кода данные в excel?
Аноним 02/07/16 Суб 08:50:04  785697
>>785688
ODBC
Аноним 02/07/16 Суб 11:56:38  785780
>>785697
Из-за такой хуйни сервер поднимать? Может онлайн инструмент есть?
Еще есть текстовик с выгруженой базой, есть программка для простого парсинга?
Аноним 02/07/16 Суб 12:20:41  785795
Аноны дайте годных источников для изучения Mongodb, а именно как работать с ним в express
Аноним 02/07/16 Суб 12:53:23  785824
>>785795
тебе в жс-тред
Аноним 02/07/16 Суб 16:32:19  785984
>>785795
http://mongoosejs.com/
Надеюсь, ты умеешь в английский.
Аноним 02/07/16 Суб 18:19:47  786065
Обучалка по PostgreSQL https://pgexercises.com

Бдует полезно тем кто не знает SQL и не работал с РСУБД
Аноним 02/07/16 Суб 20:39:38  786135
>>786065
Добавьте в шапку.

Еще http://sqlbolt.com/ и sqlfiddle
Аноним 02/07/16 Суб 20:53:29  786142
>>786135
fiddle же только мускуль сейчас поддерживает
Аноним 02/07/16 Суб 21:19:16  786164
>>786142
PostgreSQL, Oracle, SQLite и MS SQL Server он поддерживает кроме MySQL.
http://sqlfiddle.com
Менюшечка сверху слева.
Аноним 02/07/16 Суб 21:40:46  786197
>>786164
"поддерживает"
http://stackoverflow.com/a/37042895
Аноним 02/07/16 Суб 21:45:30  786200
>>786197
Люди, умеющие использовать временные таблицы, за каким хером вообще пойдут на этот fiddle?
Все это для нубов, разумеется.
Аноним 02/07/16 Суб 21:53:39  786213
>>786200
дабы показать пример работающего кода воочию
ну, и для того случая, когда СУБД под рукой может не быть
Аноним 02/07/16 Суб 22:38:43  786290
>>786213
Кстати, а есть же наверное у MS какие-то бесплатные аккаунты в Azure с MS SQL Server для популяризации его среди трудящихся?
Аноним 02/07/16 Суб 22:42:56  786298
>>786290
месяц триала. в данный момент, насколько я знаю, требуют при регистрации номер кредитки
Аноним 03/07/16 Вск 20:39:30  787124
Хочу арендовать сервер, и нужно определиться сколько оперативной памяти будет достаточно, при этом важно сэкономить денег. База postgresql весит 10 гигов. Хватит ли 2гб оперативы для нормальной работы? Структура довольно простая: одна здоровенная таблица, которая содержит 90% данных, и четыре вспомогательных. Хочу взять вот такое https://www.digitalocean.com/pricing/ за 20 баксов месяц.
Вообще 10гигов база это что-то крупное уже или детский лепет?
Аноним 03/07/16 Вск 21:12:24  787191
>>787124
Детский лепет.
PostgreSQL петабайты ворочает без проблем.
Аноним 03/07/16 Вск 21:17:16  787193
>>787124
https://www.depesz.com/2012/06/09/how-much-ram-is-postgresql-using/
Аноним 04/07/16 Пнд 00:24:04  787359
Господа, посоветуйте годной литературы по MongoDB, был бы очень вам благодарен.
Аноним 04/07/16 Пнд 01:14:42  787376
>>787359
Очевидный MongoDB in action.
Аноним 04/07/16 Пнд 01:29:45  787381
Шапку запилите, пидоры
Аноним 04/07/16 Пнд 01:44:17  787387
>>787359
https://aphyr.com/posts/322-call-me-maybe-mongodb-stale-reads
https://engineering.meteor.com/mongodb-queries-dont-always-return-all-matching-documents-654b6594a827#.s3ko3vfnx
Аноним 04/07/16 Пнд 16:09:17  787763
Анон, советуй что-то на освоение phpMyAdmin.
Какой-то мануал, на русском с детальным объяснением как с этой штукой обращаться.
Аноним 04/07/16 Пнд 18:23:36  787872
>>787763
а для гугл хрома мануал тебе не написать?
Аноним 04/07/16 Пнд 19:04:22  787894
Верно ли что лучше чтоб данные максимально подготавливались субд, в противовес когда мы что-то дергаем из базы и потом еще обрабатывем это.
Аноним 04/07/16 Пнд 19:49:01  787935
>>735299 (OP)
Нужна встраиваемая графовая база данных. Приоритет - производительность, многопоточность. Будет работать только на одной машине.
Аноним 04/07/16 Пнд 19:58:58  787943
>>787894
Одной-двумя записями манипулируй где хочешь. Если запрос с парой джоинов, группировкой и сортировкой - пусть это сделает бд.
Аноним 04/07/16 Пнд 20:28:46  787978
>>787935
AllegroGraph
Аноним 04/07/16 Пнд 22:06:49  788067
>>787978
> RDF triple store
> When you download the free version of AllegroGraph, no License Key is provided or required. The free version lets you load a maximum of 5,000,000 triples, and has no expiration date.
Толсто
Аноним 04/07/16 Пнд 22:10:36  788071
>>783669
>при удалении записи изменения в структуре индекса произойдут гарантированно, nyet?
Все зависит от того с какой СУБД ты работаешь. Ее надо знать.

Например, в PostgreSQL при удалении записи индекс никто даже с диска поднимать не будет, он не изменится. В самой таблице запись будет помечена флажком "удаленная".
Аноним 04/07/16 Пнд 22:12:31  788073
>>788067
В чем твой вопрос, долбоеб?
Ты хотел высокопроизводительную графовую СУБД, пригодную для встраивания? Ты ее получил.
Аноним 05/07/16 Втр 04:45:29  788233
Модные молодежные хипстеры. В Netflix. Мигрировали биллинг с Оракела в AWS.
> http://techblog.netflix.com/2016/06/netflix-billing-migration-to-aws.html
> The truth is, moving to the cloud was a lot of hard work, and we had to make a number of difficult choices along the way. Arguably, the easiest way to move to the cloud is to forklift all of the systems, unchanged, out of the data center and drop them in AWS. But in doing so, you end up moving all the problems and limitations of the data center along with it. Instead, we chose the cloud-native approach, rebuilding virtually all of our technology and fundamentally changing the way we operate the company.
Всё переписали, убили тучу времени и денег, в процессе нахреначили новых багов взамен исправленных старых.
Вот нахуя?
Аноним 05/07/16 Втр 09:54:24  788347
>>787872
Напиши.
Аноним 05/07/16 Втр 17:21:31  788660
> Neural Networs in MySQL
> http://blog.itdxer.com/2016/07/01/neural-networs-in-mysql.html
Аноним 05/07/16 Втр 22:15:25  789001
>>788233
Что не так? Уменьшили технический долг, которого всегда очень много в энтерпрайзе. Через год стабилизируют код и будет заебись.
Аноним 06/07/16 Срд 00:57:30  789196
Смотрите какая лалная лалка:
https://www.reddit.com/r/programming/comments/4rc9uu/say_no_to_venn_diagrams_when_explaining_joins/
https://blog.jooq.org/2016/07/05/say-no-to-venn-diagrams-when-explaining-joins/
А я то думал когда мельком на эту хуету натыкался - ну чего несут, просто охуительные истории какие-то. Но лень было особо разбираться. А оказывается так и есть, свитера все-таки ебанутейший народец.
Аноним 06/07/16 Срд 01:18:25  789203
>>789196
>свитера
Что означает это слово в твоем сленге?
Аноним 06/07/16 Срд 01:44:41  789213
>>789203
Любой кто считает что
1. Всю бизнес логику следует хранить в базе
2. SQL хороший язык программирования
Аноним 06/07/16 Срд 01:47:45  789216
>>789213
Понятно, все кто не говнОРМщики и знают про что-то чуть большее чем "селект звездочка".

А почему именно слово "свитер"?
Аноним 06/07/16 Срд 01:58:38  789225
>>789216
Это уже давно устоявшийся мемец, так что луркай нубяра.
Алсо знал двух таких долбоебов и их любимая одеждой-униформой был ну-ты-понел. Совпадение? Не думаю.
Аноним 06/07/16 Срд 02:14:27  789251
>>789213
>Любой кто
Тут запятая.
> SQL хороший
Тут дефис.
Аноним 06/07/16 Срд 02:50:20  789289
>>789251
Лучше бы хоть поднатужился и по теме что высрал лалка
Аноним 06/07/16 Срд 02:55:40  789291
>>789225
Я в замешательстве. Свитера тоже иногда ношу, английские, из тонкого кашемира.
Как же теперь быть.
Аноним 06/07/16 Срд 02:56:53  789293
>>789289
Мне показалось что тебе пытались намекнуть что кичться собственным незнанием чего-то и неумением чего-то - как минимум, неумно.
Аноним 06/07/16 Срд 03:02:51  789296
>>789213
> 1. Всю бизнес логику следует хранить в базе
А что в этом плохого?
Аноним 06/07/16 Срд 03:15:49  789309
>>789296
Отнимает работу у говнОРМщиков.
Ставишь PostgREST и оказывается что в 98% случаев их говноконвертор селектов в JSON, на каком-нибудь тормозном уебище типа рельсов, НИНУЖЕН вообще, от слова "совсем".
Аноним 06/07/16 Срд 04:59:48  789324
>>766344
select
Customer.id as ID,
fname.value as FirstName,
Customer.name as Name,
phone.value as Phone
from Customer
inner join CustomerInfo fname on customer.id=fname.id and fname.field='FirstName'
inner join CustomerInfo phone on customer.id=phone.id and fname.field='Phone'

а воще за такой дезигн таблиц нада убивать
Аноним 06/07/16 Срд 05:45:34  789331
Создал ща в постгресе простую таблицу из двух столбцов id, name. Заполнил 1000000 записей так что id = 1..1000000, а name - это случайные слова типа "one", "two".
делаю
select id, word from words where id > 900000 and id < 1000000;
запрос 0.43 секунды выполняется. Это очень долго. Нужно в сотни раз быстрее.
Но если 900000 заменить на 990000 - то быстрее в 10 раз. То есть дело видимо в физическом считывании. В общем что делать? Индекс какой-то использовать или что? Хотя я проиндексировал столбцы.
Аноним 06/07/16 Срд 10:14:55  789388
>>789331
Из 0.43 секунд 0.4299 секунд ты данные фетчишь.
Фетчи быстрее, выкинь Ruby.

И explain (analyze, buffers) в студию.
Аноним 06/07/16 Срд 10:48:42  789408
>>789331
Что ты собрался делать сразу с сотней тысяч записей?
https://www.postgresql.org/docs/9.3/static/sql-fetch.html
Аноним 06/07/16 Срд 12:29:18  789469
>>789388
подключался из раста
фетч это типа когда данные из бд преобразуются в формат языка из которого я делал запрос?
>>789408
Это тестовая выборка. Но вообще там дальше с этими 100 000 записями должны быть еще действия.
Аноним 06/07/16 Срд 12:41:11  789476
>>789296
>А что в этом плохого?
Держать бизнес-логику в базе - это как кодить на брейнфаке палочкой торчащей из ануса. Но свитерам нравится.
Аноним 06/07/16 Срд 12:46:04  789478
>>789469
Да хоть из OCaml, кто знает насколько эффективно твой Rust работает с БД на уровне протокола и через какую рукожопию у него десериализация.

Еще раз - explain (analyze, buffers) в студию, телепаты в отпуске.

> там дальше с этими 100 000 записями должны быть еще действия
Вот и делай их последовательно, эти действия, зачем тебе сразу 100000 записей выгребать-то, и быстро? Лучше всего прямо рядом с данными и делай, и выгребай уже готовые результаты - всё лучше чем циклами в совем Rustе по ним же и бегать. Напиши на своей расте обработку данных, возьми курсор, и обрабатывай сколько надо - https://github.com/thehydroimpulse/postgres-extension.rs
Аноним 06/07/16 Срд 12:49:55  789479
>>789476
>Держать бизнес-логику в базе - это как
Конечно, лучше вложенными циклами по "селект звездочка вхере id = i" пердолиться как в 1989 году с пачкой dbf-файлов. Рассказывать потом еще как СУБД "тормозит".

К тому же вся твоя "бизнес-логика" обычно это взять "селект звездочку" и в JSON выплюнуть.
Аноним 06/07/16 Срд 12:52:42  789480
>>789479
Не забудь все 350 столбцов перечислить минимум пять раз в каждом запросе, нервный свитерок.
Аноним 06/07/16 Срд 12:56:32  789484
>>789469
DECLARE c SCROLL CURSOR FOR select * from t where id > 900000 and id < 1000000;
FETCH FORWARD 5 FROM c;
> Record Count: 5; Execution Time: 0ms
Аноним 06/07/16 Срд 13:10:17  789491
>>789480
Ты даже не понимаешь над чем я иронизирую из твоего говнОРМ-манямирка.

Вся твоя бизнеса-логика - это одна функция json_agg из PostgreSQL.
Аноним 06/07/16 Срд 13:31:37  789506
>>789491
Ты хранимку на пять тысяч строк уже закончил, иронизатор? Или она уже не переваривается движком как слишком длинная?
Аноним 06/07/16 Срд 13:54:40  789512
14678024806870.jpg (84Кб, 930x1400)
Ребята, чтот про Redis скажите?
Аноним 06/07/16 Срд 13:57:53  789513
>>789506
В PostgreSQL нет "хранимок" - https://wiki.postgresql.org/wiki/FAQ#Does_PostgreSQL_have_stored_procedures.3F

Если же ты хотел поиронизировать (если предположить что тебе знакомо это слово) над портянками SQL, про которые ты что-то слышал от кого-то - то может быть тебе самому стоило бы ознакомиться со списком языков, которые поддерживаются (в качестве средств для имплементации user-defined functions), например, PostgreSQL - в них входит и Python, и Java, и Javascript, и Lua, и Си, и Perl, и Tcl, и еще десяток других. И все имеющиеся в них средства организации модульности, разумеется, никуда не деваются.
Аноним 06/07/16 Срд 13:59:36  789515
>>789512
/dev/null то же самое, только намного быстрее

> In this post, we demonstrate Redis losing 56% of writes during a partition.
> https://aphyr.com/posts/283-jepsen-redis
Аноним 06/07/16 Срд 14:08:11  789520
>>789515
Редис наверное крут если нужно много и быстро read делать.
Аноним 06/07/16 Срд 14:30:10  789532
>>789513
Представляю как охуевает оптимизатор от такого зоопарка.
Производительность - знакомо такое слово свитерок?

>Why is "SELECT count(*) FROM bigtable;" slow?
Спасибо, посмеялся.
Аноним 06/07/16 Срд 14:57:22  789542
>>789520
Перед тем как делать read, обычно надо что-то туда write. И если write туда - примерно то же, что и в /dev/null, то можно делать read сразу из /dev/random - то же самое, только намного быстрее.

>>789532
> оптимизатор
Какие ты слова знаешь, где услышал?

> Представляю
Слабо верится.

> Производительность
Побить производительность говнОРМ, которыми ты в цикле делаешь 100500+ запросов "select by id", а потом 200600+ вытаскивая атрибуты - действительно сложно превзойти.

> Спасибо, посмеялся
Над чем же?
Ты даже не понял что проблема не в count, а в count distinct.
Если тебе
действительно* нужно все время получать count, то делай то же, что ты делаешь в любом другом месте, в любой структуре данных, в любом языке и на любой платформе - заводи счетчик и обновляй его при вставке и удалении.
Если же, как это чаще всего бывает, абсолютная точность не нужна, пользуются приблизительными оценками, например https://github.com/aggregateknowledge/postgresql-hll
> For example, in 1280 bytes hll can estimate the count of tens of billions of distinct values with only a few percent error.
Да, точно так же, как и в любом другом языке, на любой платформе, с любыми структурами данных, ничего уникального здесь нет.

> свитерок
Мне нравится как ты пытаешься задеть своего собеседника, демонстрируя с каждым разом все большее отсутствие собственных знаний. Продолжай.
Аноним 06/07/16 Срд 15:45:12  789607
>>789542
Лалка, не знаю какой ОРМщик тебя выеб в жопу и ты навсегда закрылся в своем манямирке, но в реальном мире никто не "делает в цикле" и знаний у меня вполне достаточно.
Продолжай подшиваться свитерок.
Аноним 06/07/16 Срд 15:58:07  789621
14678098877080.jpg (18Кб, 200x200)
>>789607
>ты навсегда закрылся в своем манямирке
Почему ты считаешь что знания одних технологий несовместимы со знаниями других? Это проецирование твоих собственных фрустраций по поводу неосвоения возможностей современных СУБД? Хочешь поговорить об этом?
Аноним 06/07/16 Срд 15:59:01  789622
14678099417090.png (31Кб, 744x401)
>>789542
>Ты даже не понял что проблема не в count, а в count distinct.
Не знаю откуда ты вообще это высрал. Но вот какой я лал откапал. Просто лааааааааааааааааааал. Свитера не перестают делать мои дни.
Аноним 06/07/16 Срд 16:02:00  789626
>>789621
>Почему ты считаешь что знания одних технологий несовместимы со знаниями других?
Поехавшие свитера делают их несовместимыми очень легко одним росчерком:
ВСЯ РАБОТА С БАЗОЙ ДОЛЖНА ВЕСТИСЬ ЧЕРЕЗ ХРАНИМЫЕ ПРОЦЕДУРЫ
и хуй ты им донесешь до их манямирка
Аноним 06/07/16 Срд 16:08:44  789631
Как узнать размер массива?
a.length
Как узнать размер таблицы?
CREATE FUNCTION count_estimate(query text) RETURNS INTEGER AS
$func$
DECLARE
rec record;
ROWS INTEGER;
BEGIN
FOR rec IN EXECUTE 'EXPLAIN ' || query LOOP
ROWS := SUBSTRING(rec."QUERY PLAN" FROM ' rows=([[:digit:]]+)');
EXIT WHEN ROWS IS NOT NULL;
END LOOP;

RETURN ROWS;
END
$func$ LANGUAGE plpgsql;
(но только приблизительно)
Аноним 06/07/16 Срд 16:16:39  789637
>>789631
>Как узнать размер массива?
>a.length
Расскажи, как же устроен твой магический массив внутри что в нем нигде не хранится текущий его размер (и отдельно, чаще всего, текущее заполнение - это не одно и то же), и эти нигде не хранящиеся счетчики не обновляются при добавлении или удалении элемента?
И в чем же разница между ними и такими же счетчиками в БД и точно такими же триггерами?

> и хуй ты им донесешь
Похоже, твоей детской психике был нанесен непоправимый удар неосторожно сказаной фразой. Не стоит ли обратиться к специалисту?
Аноним 06/07/16 Срд 16:21:30  789646
>>789622
Что именно тебя так обрадовало?
Ты обнаружил людей, которые точно так же как ты не понимают как работают конкретные механизмы в конкретном оптимизаторе конкретной СУБД - и радуешься что ты не один в мире долбоеб?

Вместо того чтобы обнаружить некоторый намек на причины, по которым в твоем непростом детстве, которое тебя так травмировало, суровые DBA не подпускали тебя к СУБД ближе чем на дистанцию вызова хранимых процедур, тщательно защищеных от твоего рукожопства и отсутствия необходимых знаний?
Аноним 06/07/16 Срд 16:47:53  789672
>>789637>>789646
> ...? ...? ...? ...? ...?
У свитерка кончились собственные мысли
Аноним 06/07/16 Срд 16:57:22  789684
>>789542
>И если write туда - примерно то же, что и в /dev/null
Это если много write в сжатые промежутки времени. Если потихоньку их делать6 но ничего не теряется. Понятно, что задача должна позволять такую роскошь как возможность писать данные не каждую милисекунду, а реже.
Аноним 06/07/16 Срд 17:04:05  789691
>>789637>>789646
Ладно так уж и быть
>И в чем же разница между ними
В том что у нормальных людей все по-человечески сделано, а у свитеров как обычно через жопу.
>Что именно тебя так обрадовало?
То что два абсолютно одинаковых запроса выполняются по-разному потому что смотри пункт выше.
>конкретные механизмы в конкретном оптимизаторе
Если придет конкретный бомж и тебе конкретно насрет на твой конкретный пол - ты тоже будешь радоваться как малый ребенок и разглядывать наваленные завитушки?
>суровые DBA
В своих мокрых свитеро-мечтах
Аноним 06/07/16 Срд 17:17:23  789699
>>789684
А лучше - раз в неделю.
И каждый раз проверять - записалось ли.
И потом на всякий случай руками копировать на случай если вдруг потеряется.
И записывать не в Redis, а в тетрадочку.

> В том что у нормальных людей все по-человечески сделано, а у свитеров как обычно
В чем же разница?

> два абсолютно одинаковых запроса
Они настолько же "абсолютно одинаковые" как ты и DBA, травмировавший тебя в юности.
Аноним 06/07/16 Срд 17:45:16  789725
>>789699
>В чем же разница?
Ты видимо совсем тупой. В количестве буков которое надо набрать пользователю api и их очевидности.
>Они настолько же "абсолютно одинаковые" как ты и DBA, травмировавший тебя в юности.
Ну давай покажи мне такой набор данных на котором они выдадут различный результат или мразь гнилая. Хотя можешь не стараться с тобой все и так ясно с первых твоих постов.
Аноним 06/07/16 Срд 17:48:57  789730
>>789725
Ты про Redis лучше выскажись
Аноним 06/07/16 Срд 20:02:58  789821
14678245783450.webm webm file (1639Кб, 1280x720, 00:00:05)
никто не знает хорошего хостинга с PostgreSQL и PHP 7 ?
чтобы не пердолиться самому с админством
Аноним 06/07/16 Срд 22:51:24  789991
Анон, mysql5 linux,со вчерашнего вечера ябусь с кодировками, кучу настроек перерыл, где только ни менял. Вместо кириллицы добавлялись вопросики. Короче все значения поменял на юникод, но всё равно куй.
В итоге создал новую бд с дефолтной кодировкой юникод.

Это каждый раз при разворачивании бд надо так ебаться?
Как оно там вообще с кодировками, блджад?

Аноним 06/07/16 Срд 23:20:27  790018
>>789725
>В количестве буков которое надо набрать пользователю api и их очевидности
Совсем немного, очевидность - очевиднейшая.
http://stackoverflow.com/a/28219043

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

> такой набор данных на котором они выдадут различный результат
Ты совсем уж пизданулся. Эквивалентность действий определяешь как эквивалентность результатов.
Аноним 06/07/16 Срд 23:22:35  790021
>>789821
https://devcenter.heroku.com/articles/php-support
https://devcenter.heroku.com/articles/heroku-postgresql
Аноним 07/07/16 Чтв 00:39:09  790087
>>790018
Ты еще спроси как заставить стандартную библиотеку танцевать румбу, дибилка.
Не знаю нахуя ты эту ссылку притащил. Кстати триггеры - худшее из дна, но ты видимо туповат и это не понимаешь еще.
>Ты совсем уж пизданулся. Эквивалентность действий определяешь как эквивалентность результатов.
Этим занимается компилятор когда оптимизирует программу, мразь. У свитеромразей такое тоже есть но как обычно работает только через раз и очень хуево, мразь. Кстати как оно - приятно быть гнилой мразью?
Аноним 07/07/16 Чтв 00:48:33  790099
>>790087
Это ведь ты предложил сравнить таблицу СУБД с массивом в твоем любимом ЯП. Вот давай сравнивать честно.

>Не знаю нахуя ты эту ссылку притащил
Там буквы, их можно прочесть. Понимаю что для тебя это слишком невероятное умственное усилие, но ведь эту доску не один ты читаешь.

>триггеры - худшее из дна
Аргументация, как обычно, исчерпывающая.

> Этим занимается компилятор когда оптимизирует программу
И два компилятора с разными наборами ключей компиляции дадут тебе в твоем любимом ЯП два разных ассемблерных листинга.
И точно так же, два разных исходных текста могут превратить наоборот, в один и тот же ассемблерный листинг.
И эквивалентность будет не при чем как в первом, так и во втором случае.
Это ведь самые базовые вещи, ты даже их не понимаешь?
Аноним 07/07/16 Чтв 00:56:38  790108
>>790099
>ты даже их не понимаешь?
Мразь ну хватит уже фантазировать свои маняпроекции. Я когда-нибудь услышу чем эти два запроса принципиально отличаются?
Аноним 07/07/16 Чтв 01:02:07  790117
>>790108
Откуда ВНЕЗАПНО появилось слово "принципиально"? И что оно означает в контексте эквивалентности программных конструкций?

Вычисление факториала с помощью рекурсии и циклов дают одинаковый результат (если их писал не ты и они имплементированы корректно), означает ли это их эквивалентность? Если да - это принципиальная эквивалентность или какая-то другая?
Аноним 07/07/16 Чтв 01:05:47  790122
>>790117
Ну мразь ну плез. Ведь всегда можно сманяврировать - вон смотри там больше букв написано - значит они разные. Я прошу объяснить их отличие в рамках семантики реляционной алгебры.
Аноним 07/07/16 Чтв 01:12:47  790135
>>790122
SQL и реляционная алгебра - достаточно далеко отстоящие друг от друга понятия.

Примерно как теоркатовский моноид в категории эндофункторов и Monad в Haskell.

Ты пока не ответил ни на один мой вопрос, кстати. Последние были про эквивалентность и её принципиальность.
Аноним 07/07/16 Чтв 01:21:44  790141
>>790135
>Ты пока не ответил ни на один мой вопрос, кстати.
А я все жду когда мразь вякнет хоть что-нибудь отдаленно раскрывающее высказывание
>Они настолько же "абсолютно одинаковые" как ты и DBA, травмировавший тебя в юности.
Но ничего кроме прямых репортажей из манямирка и приглашения пофилософствовать на тему "что такое равно" я не наблюдаю.
Аноним 07/07/16 Чтв 01:36:03  790151
>>790135
ya ya
далеки
как ты от людей
Аноним 07/07/16 Чтв 01:38:32  790157
>>789213
> Любой кто считает что
> 1. Всю бизнес логику следует хранить в базе
Любой аналитик тебе скажет так же. Потому что бизнес-логики за сотнями строк AbstractProxy...FactoryBean не видно.
> 2. SQL хороший язык программирования
Это язык описания запросов, не самый лучший, но интуитивно понятный.
мимо
Аноним 07/07/16 Чтв 01:40:04  790159
>>790141
У высказываний должен быть какой-то смысл. Ты используешь понятия "эквивалентность" и "принципиальная эквивалентность", тебе их смысл и раскрывать.

>>790151
Ты что-то хотел сказать?
Аноним 07/07/16 Чтв 01:45:23  790168
>>790157
>мимосвитер
пофиксил
>>790159
Ну все мразь включила повышенную маневренность, теперь с ней не совладать.
Аноним 07/07/16 Чтв 01:56:44  790175
>>790168
Мы так и не узнаем от тебя ничего про принципиальную эквивалентность?
Аноним 07/07/16 Чтв 02:20:39  790182
>>790175
Нет.
Аноним 07/07/16 Чтв 02:21:48  790184
>>790182
Слив защитан.
Аноним 07/07/16 Чтв 02:29:17  790187
>>790184
Мразь, плиз. Хватит уже маневрировать и отвечай на вопрос. Определение эквивалентности можешь взять любое на свой вкус.
Аноним 07/07/16 Чтв 02:36:07  790192
>>790187
На какой вопрос? Почему разные выражения языков программирования после обработки разными оптимизаторами с разными параметрами могут быть оттранслированы в разные конструкции низкого уровня, несмотря на то что неумелый программист мог иметь в обоих случаях ничем не подкрепленое мнение о том что он имел в виду примерно одно и тоже?

Ты не знаешь на него ответа?
Аноним 07/07/16 Чтв 02:39:58  790194
>>790192
Чем отличаются эти два запроса. Не коси под дауна, мразь, даже если для тебя это так легко и непринужденно.
Аноним 07/07/16 Чтв 02:43:06  790195
>>790194
Тем что они разные?
Ты не можешь сделать diff двух строчек?
Аноним 07/07/16 Чтв 02:44:33  790197
>>790195
Все пиздос. Эта мразь совсем испортилась, нужна новая.
Аноним 07/07/16 Чтв 02:54:03  790201
>>790197

Кстати, в зависимости от разных факторов, например наличия индекса, селективности, кардинальности, статистики, самих данных, настроек, оборудования на котором запущен сервер - результаты твоих двух вариантов count() с SO тоже будут разными - это нормально.
http://sqlfiddle.com/#!15/f263c/1

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

Определения эквивалетности мы всё-таки дождемся от тебя или нет? Ты утверждаешь что разные выражения эквивалентны - дай какие-то этому основания.
Аноним 07/07/16 Чтв 03:04:49  790205
>>790201
Их результаты всегда будут одинаковы на любых возможных данных и это очевидно. То что 2+2=4 тебе не надо обосновывать? Если я напишу в программе вместо 4 2+2 должен ли я ожидать изменения в производительности в несколько раз? Или может быть компилятор нормального человека способен на простейшие манипуляции с выражениями в отличии от компилятора свитеромрази.
Аноним 07/07/16 Чтв 03:06:35  790207
>>790201
>Роли в данном случае это никакой не играет потому что никто count() всё равно нигде и никогда не использует
Даа? Что же используют вместо него тогда?
Предвижу дальнейших убогих маняврирований мрази на десяток постов минимум.
Аноним 07/07/16 Чтв 03:10:49  790209
>>790205
То есть ты настаиваешь на эквивалентности программных конструкций на основании тождественности их результатов?
Ты действительно настолько долбоебичен?
Число 4 можно получить бесконечным количеством способов, означает ли это что все эти способы должны выполняться за одинаковое время?
Аноним 07/07/16 Чтв 03:13:14  790210
>>790207
Обычно - ничего, count() практически никогда не нужен.
Реже - приблизительные алгоритмы типа HLL.
В исчезающе редких случаях когда всё-таки нужен точный count() - обычно это ошибка проектирования подобными тебе долбоебами - счетчик и триггер - >>790018
Аноним 07/07/16 Чтв 03:17:42  790212
>>790209
Мразь ты такая тупая что просто некуда деваться. Если ты не видишь никакой разницы между этими двумя примерами то тебе поможет только лоботомия.
Можно было бы предложить такой пример: всякая функция a->a является id. Но ты все равно тупой не поймешь нихуя.
>>790210
Ну если это действительно так и для самой элементарной операцией надо коллекцией какую только можно помыслить нужно городить такие костыли, то все еще хуже в свитероцарстве, чем я раньше думал. Но что то даже не верится.
Аноним 07/07/16 Чтв 03:22:24  790215
>>790212
>всякая функция a->a является id
И поэтому вне зависимости от имплементации любые функции с одинаковой сигнатурой должны выполняться за одинаковое время?

> для самой элементарной операцией надо коллекцией какую только можно помыслить нужно городить такие костыли
Костыли совершенно те же, что и в любом другом языке - >>789637
Аноним 07/07/16 Чтв 03:28:56  790219
>>790215
>И поэтому вне зависимости от имплементации любые функции с одинаковой сигнатурой должны выполняться за одинаковое время?
Я же говорил - нихуя не поймешь.
>Костыли совершенно те же
Я уже написал про различия, зачем ты зацикливаешься, мразь? Место в памяти закончилось?
Аноним 07/07/16 Чтв 05:33:25  790241
>>790219
Ты написал что тебе не нужно реализовывать триггер и поля "занято элементами" и "аллоцировано памяти". В твоем любимом Ruby этого делать действительно не надо - но если бы ты знал хотя бы Си, ты бы понимал что это три строчки - точно так же как и в случае с СУБД - и никакой проблемы никогда и никому это не доставляет.

После этого я задал тебе вопрос - что же предлагает твой любимый ЯП, в котором триттегры и два поля уже есть "из коробки" на тему конкурентного доступа к твоему массиву и его индексации различными способами - потому что раз ты предложил сравнить, то почему же не сравнить - ответа, разумеется, от тебя не поступало.
Аноним 07/07/16 Чтв 13:23:42  790434
>>790157
> Любой аналитик
Любой программист скажет обратное.
> бизнес-логики за сотнями строк AbstractProxy...FactoryBean не видно
Как будто что-то плохое.
Аноним 07/07/16 Чтв 13:41:01  790445
>>790241
Смешная свитеромразь, ты когда-нибудь закончишь юлить пиздой и ответишь на один вопрос которого я добиваюсь у тебя уже постов пятьдесят - распиши мне свой мыслительный процесс - как я должен прийти к тому что второй запрос отличается от первого и должен отработать быстрее, поделись же своим сакральным свитерознанием?

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

>Ты написал что тебе не нужно реализовывать триггер и поля "занято элементами" и "аллоцировано памяти". В твоем любимом Ruby этого делать действительно не надо - но если бы ты знал хотя бы Си, ты бы понимал что это три строчки - точно так же как и в случае с СУБД - и никакой проблемы никогда и никому это не доставляет.
Потому что Сишка - низкоуровневый инструмент. Сравнивать Сишку и СУБД - ну это все пиздец клиника нахуй. Если в СУБД нет простейших средств для работы с данными - ну это хуево значит. Никакой проблемы - ну может быть свитерам чья срака уже так разработана что туда без проблем влезет кластер для репликации.
>После этого я задал тебе вопрос - что же предлагает твой любимый ЯП, в котором триттегры и два поля уже есть "из коробки" на тему конкурентного доступа к твоему массиву и его индексации различными способами - потому что раз ты предложил сравнить, то почему же не сравнить - ответа, разумеется, от тебя не поступало.
Для этого есть конкурентные структуры данных. Если язык позиционируется для таких целей - то они наверняка будут в стандартной библиотеке. Лень даже писать про это, не знаю в какой ты там землянке живешь что об этом не знаешь.
Аноним 07/07/16 Чтв 13:53:09  790453
>>790445
>как я должен прийти к тому что второй запрос отличается от первого
Сделать diff, третий раз говорю. Ну если ты просто визуально не видишь что они разные - воспользуйся автоматикой.

> и должен отработать быстрее
Он не должен. И отрабатывает либо быстрее, либо наоборот, медленнее - в зависимости от, например, наличия индекса - что я тебе продемонстрировал в sqlfiddle.

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

> Сравнивать Сишку и СУБД - ну это все пиздец клиника нахуй
Я тебе, дуралею, показываю что внутри у всех одно и то же - никакой магии нет. Либо ты хранишь счетчик, и получаешь count моментально, либо не хранишь, и надо либо пересчитывать, либо счетчик заводить. В любом языке, на любой платформе. Завести счетчик - три строчки - на любом языке, на любой платформе, в этом тоже нет никакой магии.

> в СУБД нет простейших средств для работы с данными
В СУБД есть не только простейшие средства для работы с данными, но и весьма продвинутые. Которых нет у твоего "обычного массива из Ruby" - или какой у тебя там любимый язык-не-Сишечка.

> Для этого есть конкурентные структуры данных.
Показывай. Вот из того гипотетического языка, который ты все время приводишь в пример, но так его до сих пор и не назвал - стесняешься, наверное. Давай внимательно посмотрим какие в нем конкурентные структуры данных, как они устроены, что позволяют делать, и за счет чего они это позволяют.
И мы с тобой быстро-быстро придем к тому что вариантов всего два - либо они основаны на блокировках, и тогда написание высококонкурентного кода сильно затрудняется - либо на версионности записей (той же по сути MVCC что и в PostgreSQL и Oracle). И за те преимущества, которые даёт версионность, приходится расплачиваться сложностями с distinct count - потому что чудес не бывает.






Аноним 07/07/16 Чтв 14:08:24  790464
>>790453
Чтобы тебе было проще, можешь начать с показывания в своем гипотетическом языке a.distinct_length() - а не a.length(), как ты настойчиво пытаешься все время то ли передернуть, то ли продемонстрировать собственное непонимание сути проблемы - тут уж не знаю что именно.
Аноним 07/07/16 Чтв 14:22:50  790467
>>790453
Ответа все как не было так и нет. Никаких рассуждений, только если написать 50 разных эквивалентных запросов и посмотреть какой из них будет быстрее. Поэтому нормальные люди и посмеиваются над свитерками.
>Показывай
Нахуй иди мразь. Наша дискуссии и так уже подзатянулась.
Аноним 07/07/16 Чтв 14:38:06  790477
>>790453
>Сделать diff, третий раз говорю.
Значит только буковками, ну все приплыли, мразь.
>Это тянет на две нобелевские премии и медаль Филдса.
Алгебраическое равенство, мразь. Нет, думаю с этим еще арабы разобрались.
>В СУБД есть не только простейшие средства для работы с данными, но и весьма продвинутые.
Ряяя все есть. Как узнать количество элементов? Заведи счетчик ну это же очевидно. Что это? Кто-то там опять пилит новую нескучную СУБД? Но зачем они это делают ведь все и так удобно и отлично работает?
Аноним 07/07/16 Чтв 14:52:03  790487
АНоны, как вкатиться в big data, hadoop? Работаю с ХД, Терадатой, но она не годится особо. Можно перекатиться на гриплум, но там тоже все как-то мутно.
Я к тому, что для вакансия для джуниоров. Стажировок тоже.
Аноним 07/07/16 Чтв 14:53:05  790489
>>790487
Бля, тред вообще не о том, я хуйню спросил.
Аноним 07/07/16 Чтв 15:07:18  790491
Мда. Два дебила это сила.
Аноним 07/07/16 Чтв 15:09:14  790494
>>790489
Почему не о том? О том.
Что тебе кажется мутным с Greenplum? Оосбенно не в community-варианте.

>>790477
Опять слив защитан. Ты мне счтетчик твоих сливов хочешь переполнить?
Какое нахуй алгебраическое равенство, где ты его там увидел?
Показывай a.distinct_count()!
Аноним 07/07/16 Чтв 15:15:41  790501
>>790494
Да работа с ним будет очень ограничена спецификой ит-консалтинга. Ну очень. Поэтому думаю просто уебывать.
Аноним 07/07/16 Чтв 15:20:05  790505
>>790494
Значит остановимся на том что ты гнилая мразь. ЧТД
Аноним 07/07/16 Чтв 15:22:59  790506
>>790501
Не понял. Ты боишься что твоя экспертиза по Greenplum будет не востребована на рынке?
Ну, зависит от рынка и качества экспертизы прежде всего. Вообще интерес к Greenplum большой - Vertica стоит дохуя, Teradatа тоже, а у GP есть интересный community-вариант к тому же, взять который и привлечь местного консалтера - выглядит вполне адекватно.
Аноним 07/07/16 Чтв 15:25:06  790509
>>790505
Я счетчик двойной разрядности для тебя завел, не переполнишь.

a.distinct_length() неси.
Аноним 07/07/16 Чтв 15:28:41  790512
>>790509
Не напрягайся мразь
Аноним 07/07/16 Чтв 15:46:39  790529
>>790506
Имхо гринплум выглядит интереснее Терадаты, хотя бы из-за скорости. Да и терадата уж больно заточена на не-сырые данные.
Да, мой опыт будет довольно бесполезным, и я бы с большой радостью ушел бы хоть джуном.
Аноним 07/07/16 Чтв 15:53:08  790540
>>790529
>мой опыт будет довольно бесполезным
Почему? Опыт с Терадатой - это живые деньги.
Аноним 07/07/16 Чтв 16:07:23  790562
>>790540
Я знаю около 20 коллег, которые с ней работают, и никому из нас не светит свалить куда-то, т.к. задачи дальше уровня "оценить запрос, как ускорить, создать скрипт сверки" не заходит.
Аноним 07/07/16 Чтв 16:10:17  790569
>>790540
У меня на работе она просто СУБД. Ебля больше с платформой и etl
Аноним 07/07/16 Чтв 16:21:29  790585
>>790562
Ну так свалить в те места, где речь заходит о том же самом - почему не заходит?
Да, свалить в вице-президенты Goldman Sachs с такой позиции будет трудновато, но это и понятно.

>>790569
А у других на работе она межпланетный космический корабль?
Аноним 07/07/16 Чтв 18:13:26  790680
>>783772
>Если у тебя таблица на 10 миллиардов записей, то издержки связанные с поддержанием индекса в актуальном состоянии будут незаметны на фоне увеличения скорости поиска.

Use partitions, Luke!
Аноним 07/07/16 Чтв 18:18:56  790682
>>790540
Найди хотя бы 10 контор в РФ, где используется Терадата. Это я про потенциальных работодателей.
Аноним 07/07/16 Чтв 18:25:19  790687
>>790682
юзаем redshift как бэкэнд дб к приложению, вообще в ус не дуем.
Аноним 07/07/16 Чтв 18:26:52  790689
>>790687
почти террабайт данных, бтв
Аноним 07/07/16 Чтв 18:48:25  790704
>>790687
Он бесплатный? Просто Терадата стоит ебических денег и спецов по ней днем с огнем не сыскать.
Аноним 07/07/16 Чтв 18:51:55  790706
>>790704
ясен хуй что нет, но базируясь на задачах котрые решаются 15к грина в год по сути хуйня.
Аноним 07/07/16 Чтв 18:59:48  790713
>>790689
Терабайт можно на одноюнитном сервере в памяти держать, нахуй вам Терадата для этого?
Аноним 07/07/16 Чтв 19:01:17  790716
>>790680
Ты так говоришь как будто partitioning бесплатен.
И не всегда он возможен в принципе.
Аноним 07/07/16 Чтв 19:02:15  790717
>>790713
можно держать, но нужно юзать запросы в рилтайм над этим терабайтом, и еще надо его не проебать по некоторым причинам, еще обслуживать этот ебаный сервер не охота.
Аноним 07/07/16 Чтв 19:03:04  790718
>>790434
Плохое. Ничего хорошего в этом нет.
Аноним 07/07/16 Чтв 19:13:58  790730
>>790713
что такое сервак с теробайтом, который нужно юзать и он должен быть постоянно доступен. Это скорее всего два сервака в колд стэндбае, а лучше 3 еще для ДР, потом мартышка за 30-40к которая нажмет пару кнопок в случае чего, плюс софт который будет мэп рэдюсить за бесплатно с другой мартышкой за 40к, или не бесплатный софт, с другой мартышкой которая будет жать кнопки в нем, ну и где здесь выгода?
Аноним 07/07/16 Чтв 19:15:40  790734
>>790717
За проеб данных в Амазоновском облаке кто отвечает? А если инет упадет, пиздец бизнесу?
Аноним 07/07/16 Чтв 19:21:50  790740
>>790734
все кончно на уровне для энтерпрайз клиентов, но мне лично похуй если глянуть терзво, внутренний ДБА свиторок чем мне ответит за проеб данных? только кляузой об увольнении. Такчто, все относительно.
Аноним 07/07/16 Чтв 19:25:14  790742
>>790740
>ДБА свиторок
Это какой-то локальный мем?
Если есть ДБА, а бэкапов нет, то нахуй его содержать?
Аноним 07/07/16 Чтв 19:29:34  790744
>>790742
т.е. в амазоне один долбоебы, а нащ местный свитерок всех переиграл с бэкапами? Эта и есть суть дисскуссии?
Аноним 07/07/16 Чтв 19:33:11  790750
>>790744
Амазон вряд ли проебет данные, а вот у местных провайдеров каналы регулярно падают. Ну и не всем конторам по закону можно держать данные за бугром.
Аноним 07/07/16 Чтв 19:36:12  790756
>>790750
Ну о Российских конторах тут речь и не идет, много ли в россии контор, которые хотябы бакс готовы заплатить долбоебам из амазона, когда тут свой свитерок с бекапами на чеку?
Аноним 07/07/16 Чтв 19:40:49  790764
>>790756
А о чем тогда речь?
Я не спорю, что это модно, дешево и быстро - хранить все в Амазоне, но вот есть 2 слабых места, неприемлемых для российских контор.
Аноним 07/07/16 Чтв 19:44:23  790772
>>790764
Да мне похуй на российские конторы, я в них не работаю, написал что используем, с терадатой можете ебаться, никакой свой простяцкий сервер вам не поможет сэкономить, потомучто это бля импортозамещение.
Аноним 07/07/16 Чтв 22:35:39  790950
>>790740
>все кончно
С большой буквы. Пропущена буква.
>похуй если
Пропущена запятая.
>Такчто
Пропущен пробел.
Аноним 07/07/16 Чтв 22:46:23  790965
>>790764
Если нужно полное импортозамещение, можно поговорить с PostgresPro про поддержку Citus - https://www.postgrespro.ru/blog/pgsql/27738
Аноним 07/07/16 Чтв 22:49:56  790969
>>790730
С Терадатой необязательно сервер должен быть доступен постоянно - если в ней только OLAP (да и зачем в нее OLTP совать?).

Вы на каждый сервер по джуниор-админу берете? Необычный подход.
Аноним 07/07/16 Чтв 23:00:03  790979
https://twitter.com/IntelITCenter/status/751142764981653504
Аноним 08/07/16 Птн 03:02:14  791145
Опытные программисты против бизнес-логики в СУБД

> Because of my COBOL background, I have surprised younger programmers by manipulation of strings of data. I have written systems that start off reading a SQL table, then writing to flat files on the local CTemp areas to filter and parse data for exporting to vendors that do printing. Doing that is sometimes easier, and usually much faster that running complex SQL statements to select out the data you need. And it takes the load off the database server
Аноним 08/07/16 Птн 19:27:45  791683
> inb4 Big Data
http://sqlmag.com/scaling-success-sql-server-2016/sql-server-2016-r-integration
Аноним 09/07/16 Суб 04:08:02  791978
товарищи мрази
я ж думаю что все согласны что монга - кал*
Аноним 09/07/16 Суб 04:25:32  791985
>>791978
просто ты зашоренный эскуель-дебил
не можешь в nosql mapreduce big data javascript es666 nodejs кококо кукареку кудкудахкудах
против прогресса пидор идеш
плеснул бы тебе из кружки смузи прямо в твое мерзкое ебало
Аноним 09/07/16 Суб 10:33:03  792036
>>791978
Жить можно.
Монга-это как нестрогая динамическая типизация из мира БД.
Аноним 09/07/16 Суб 12:50:17  792097
>>792036
Кто тебе в реляционной СУБД хранить нестрого типизированные (схематизированные) данные? Эффективный XML storage везде есть с лохматых годов, когда никакой монги и на горизонте не было. Эффективный hstore в PostgreSQL с примерно тех же времен.
Сейчас вообще JSONB, еще и быстрее монги работает, и транзакции нормальные.
Аноним 09/07/16 Суб 17:35:10  792335
Монга, Редис, смузи!

https://twitter.com/slashdot/status/751785642686906368
Аноним 09/07/16 Суб 20:16:15  792399
>>792335
Редис хорошая же штука, свои задачи выполняет. А сувать туда всё подряд и потом иметь проблемы, как в монгу, и не положено.
Аноним 09/07/16 Суб 20:39:56  792410
>>792399
Для задач кэша она переусложнена и слишком глюкодромна - классический memcache лучше.
Для задач более серьезных, которые в стране вечного вебодетства пытаются на неё натянуть - ну совсем получается хуита.

Но на слэшдоте речь и не про редис как таковой, а про уровень долбоебизма его типичных пользователей.
Аноним 10/07/16 Вск 19:44:11  793036
14681690521740.jpg (42Кб, 437x339)
Антоши, не могу разобраться, поясни за внешние ключи и работу с ними.

Вкратце, есть игра, игроки бывают разных типов - воин, маг, лучник и т.д.
Какая-то часть свойств общая, например, имя, здоровье; какая-то - индидуальна для каждого класса, например, только у воина может быть помощник со своими характеристиками, и таких отличий немало.
Соответственно, я создал таблицу Character с общими полями и полем type, где указываю тип персонажа, и для каждого типа сделал по своей таблице со своими полями, например, Warrior для воина, где уже указаны именно его характеристики, например assistnt_id (id помощника). Делаю связь 1к1 Character и Warror: id - основной ключ для каждой записи в таблице Warrior беру просто такой же, как у родительской записи таблицы Character. Можно ли так делать или же идентификатор не должен копировать родительский?
И я чувствую избыточность этого всего - например, можно было бы не указывать type в Character, т.к. эту информацию можно получить из дочерних таблиц, но не искать же по ним всем, верно?

Аноним 10/07/16 Вск 20:31:26  793077
>>793036
Ну да, обычно реализуют либо одной таблицей с полным набором свойств, либо так, как сделал ты : дочерними таблицами, которые наследуют(в постгресе только такое видел, не уверен, что есть в мс скл) набор основных полей. А над всеми этими таблицами вешают вьюху, в которой через union all объединяют их по очереди в одну сущность.
Аноним 10/07/16 Вск 20:49:21  793091
14681729620470.png (1Кб, 180x80)
>>793077
Спасибо, вообще, юнионом не хотелось б, у меня там на эктиврекордах работает, иногда приходится дёргать родительскую модель отдельно, что тоже не очень удобно.
А именно дублированные идентификаторы и явное указание дочерней таблицы в каждой записи - это ок?
Аноним 10/07/16 Вск 23:44:17  793278
Как записать в базу данных время? Допустим я каждую минуту запускаю скрипт который добавляет какие-либо данные в БД и хочу еще записать время полученное строкой
$time_now = date("H:m:s");
Какой тип данных выбирать для колонки?
И правильно ли я пытаюсь записать данные такого типа в базу?
$query = "INSERT INTO stat (time_now) VALUES ($time_now)";
Аноним 11/07/16 Пнд 10:51:30  793439
>>793091
Явное указание дочереней таблиц - это у тебя справочник с сущностями есть, типа
1. воин, 2. маг, 3. лучник, и в таблице фактов просто стоит айдишник из этого справочника? Если так, то, думаю, да.

Насчёт дублирования - не уверен, что хорошо (если не использовалось наследование), но, честно говоря, сам не вижу другого выхода.
Можно 1. дублировать, а можно 2. вешать другой айдишник и просто ссылаться на родительскую запись. Если второй способ, то это еще одно поле добавляется, так что, наверное, лучше уж продублировать.

Если немножко углубиться, то можно еще пофантазировать на тему того, зачем тебе эти свойства (которые уникальны для каждого героя) и как устроены запросы, которые эти свойства используют?

Потому что, вероятно, можно было всё это устроить в таблице Character_property с полями
1. Character_property_ID - PK
2. Character_ID - FK
3. Character_propert_name

И из нее обращаться любым набором свойств к герою любого типа, будь то воин или маг.

Аноним 11/07/16 Пнд 10:59:19  793444
>>793278
DATETIME (Можно просто TIME),
timestamp with timezone (если можешь)
Аноним 12/07/16 Втр 17:04:52  794401
Что про Tarantool скажете? Пробовал кто? Отечественный продукт от mail.ru
Аноним 13/07/16 Срд 10:30:53  794977
Есть строка.
SELECT * FROM stat WHERE datetime_now = (SELECT max(datetime_now) FROM stat)
Достает из базы строку с последней датой.
Как мне достать теперь строку с датой на минуту меньше? Всякие dateadd не работают, ну или я рукожоп.
Тип DATATIME если что.
Аноним 13/07/16 Срд 15:45:46  795153
>>794977
Ну так ты напиши, что у тебя не работает, а то сам запрос, который не работает, ты не приложил.
В моем примере dateadd работает, как надо

WITH stat AS (
SELECT CAST('2016-01-01 23:59:00.000' AS DATETIME) AS datetime_now
UNION ALL
SELECT CAST('2016-01-01 23:58:00.000' AS DATETIME)
)
SELECT
datetime_now
FROM stat
WHERE datetime_now = DATEADD(MINUTE, -1, (SELECT MAX(datetime_now) FROM stat))
Аноним 13/07/16 Срд 15:47:28  795154
>>795153
Соответственно из таблицы stat он выведет только ту запись, которая на минуту меньше минимальной.
Аноним 13/07/16 Срд 17:38:40  795272
14684207205200.png (12Кб, 701x152)
>>795153
В общем вот.
Есть таблица, куда каждую минуту добавляются новые строки.
Сначала я беру последнюю строку, смотря по последней дате добавления.
Потом я хочу взять строку, добавленную минуту назад и беру по последний айди - 1, но т.к. иногда там появляются лишние строки, это уже не сработает. Вот мне и нужно брать по дате. Чтобы вычитать из последней даты 1 минуту.
Не знаю правильно ли пояснил, вчера только с БД познакомился.
Аноним 13/07/16 Срд 18:20:00  795306
>>795272
если у тебя все так детерминированно, почему ты не можешь взять TOP 2 ... ORDER BY [date] DESC?
Аноним 13/07/16 Срд 21:17:03  795418
>>795272
Ты попробовал, то, что я написал тут? >>795153
Если да, и не работает, то что именно не работает?
Аноним 13/07/16 Срд 22:35:25  795480
14684385255270.png (18Кб, 850x279)
>>795418
Вот. Или я что-то неправильно написал?
Аноним 13/07/16 Срд 22:59:39  795506
query = query->query(query) //query
Аноним 14/07/16 Чтв 08:42:15  795640
>>795480
Ну у тебя субд mysql, в гугле совсем забанен?
>DATE_ADD('2014-02-13 08:44:21', INTERVAL -1 MINUTE);
http://www.techonthenet.com/mysql/functions/date_add.php
Аноним 14/07/16 Чтв 15:18:39  795945
Всем привет хочу заняться алминством Postgres. Какие подводные камни? Долго ли учится? Легко ли освоить. П.с. до этого про базы данных ничего не знал. Спасибо.
Аноним 14/07/16 Чтв 16:31:33  796004
>>795945
А откуда такое специфическое желание? Именно админство постгреса?
Аноним 14/07/16 Чтв 17:50:05  796083
>>796004
Востребовано. Есть варианты работать по нему.
Аноним 14/07/16 Чтв 22:28:24  796293
>>795272
Сохраняешь id последней... ищешь id на один меньше...
Да и пока транзакция длится, ты не видишь новые строки.
Аноним 15/07/16 Птн 08:48:15  796534
>>796293
> ищешь id на один меньше
охуенно гениальное решение. сам придумал?
Аноним 15/07/16 Птн 09:26:08  796547
>>796534
> каждую минуту добавляются новые строки.
> Потом я хочу взять строку, добавленную минуту назад и беру по последний айди - 1, но т.к. иногда там появляются лишние строки, это уже не сработает.
Нет. И не вижу причины почему это "уже не сработает"
Аноним 15/07/16 Птн 11:33:44  796594
>>796547
ты можешь стопроцентно гарантировать успешность любой из предыдущих транзакций?
Аноним 15/07/16 Птн 20:10:58  796961
>>795640
Мля, ты будешь что-нибудь отвечать? Или ты один из этих, кто нашел решение и забил хуй без ответа? Помогло или нет?
Аноним 15/07/16 Птн 20:47:03  796986
Пытаюсь сделать борду с использованием Postgres. Как мне сделать id постов, зависимые от доски. Т.е. если есть один пост в a, и один пост в b, то у обоих постов id будут 1, а не 1 и 2. Знаю, что в мускуле это делается с помощью AUTO_INCREMENT и compound primary key
Аноним 15/07/16 Птн 20:47:35  796987
>>796986
> Как мне сделать id постов, зависимые от доски.
Это вопрос, конечно же
Аноним 15/07/16 Птн 21:07:35  797009
>>796987
Сделать автоинкрементный (или другой уникальный) первичный ключ, и столбец пост-ин-тхрэад-айди с уникальным индексом
Либо создавать таблицу для каждого треда

В обоих случаях это будет решение уровня кал
Аноним 15/07/16 Птн 21:18:02  797015
>>797009
А есть какие-нибудь хорошие решения? Или может на мускул перейти, или сделать общий автоинкремент для всех постов на всех досках?
Аноним 15/07/16 Птн 21:32:00  797032
>>796986
Очевидно, генерить айдишник, как ключ родительской записи + свой собственный (складываем строки).
Аноним 15/07/16 Птн 22:39:48  797091
>>797015
не вижу ничего плохого в сквозной нумерации
Аноним 16/07/16 Суб 10:37:56  797384
Здарова, пацаны! Как в консольке узнать кол-во записей в sqlite базке? Исходный csv у меня весит ~900 метров и в нем 2658966 строк, а sqlite ~450 метров. Вот думаю не объебался ли я. Гугл не помог.
Аноним 16/07/16 Суб 10:47:49  797387
>>797384
записей всех таблиц чтоли?
Аноним 16/07/16 Суб 11:11:26  797400
>>797387
Таблица одна. Нужно узнать сколько там записей. У меня тупо памяти не хватает отфетчить все и затем посчитать. В монге например есть db.stats(), здесь ищу что-то похожее.
Аноним 16/07/16 Суб 11:13:04  797401
>>797400
select count(id) from tablename
Аноним 16/07/16 Суб 11:15:32  797405
14686569326500.jpg (30Кб, 590x387)
>>797401
Лол, мог бы и сам догадаться. Грац.
Архитектура и оптимизация БД Аноним 16/07/16 Суб 13:39:48  797473
Здравствуй, анон. Попался мне не заурядный и сложный проект (веб платформа для подбора вечеринок). Будет много таблиц в БД и мне хочется сделать все хорошо и правильно. Работаю с MySQL и PHP. До этого использовал БД в который максимум 5-7 таблиц и не шибко связанны между собой, а этот проект сулит большой объем. Так вот собственно моя просьба: подскажи, пожалуйста, какие посмотреть материалы для работы (книги, статьи). Особенно хочется понять как правильно построить архитектуру БД и оптимизировать ее.
Аноним 16/07/16 Суб 16:56:10  797653
>>788073
>Ты хотел высокопроизводительную графовую СУБД, пригодную для встраивания?
Она платная, и меня именно это останавливает. На торрентах крякнутой нет случаем?
Аноним 16/07/16 Суб 18:15:05  797721
>MySQL и PHP
>2016
Аноним 16/07/16 Суб 20:14:45  797821
>>797721
как же хорошо, что ты тоже их их любишь, няш)
Аноним 16/07/16 Суб 20:43:10  797845
>2016
>поцгрес
Аноним 18/07/16 Пнд 14:48:40  799220
>>797821
>>797845

А теперь мы всем тредом выслушаем ваши представления о бесплатной СУБД, которую просто втсроить в лешкий интернет-проект.
Аноним 18/07/16 Пнд 14:48:57  799222
>>799220
>легкий
Аноним 18/07/16 Пнд 15:33:42  799250
>>797845
дибил
Аноним 18/07/16 Пнд 16:25:59  799292
Hsqldb in process это типа sqlite?
Аноним 19/07/16 Втр 22:12:31  800664
Сап, ананасы. Перенес сайт с Джумлы на Вордпресс, всплыла проблема - не совпадают ID статей в базе. А нужно чтоб совпадали, иначе сайт выпадет из индекса поисковиков, потому что на старом сайте они были указаны в URL.

Есть какой-то способ по-быстрому (быстрее, чем руками) перебить ID у 1к статей? Подскажите хоть в какую сторону копать, или сколько это стоит и как сформулировать задачу макаке-фрилансеру.
Аноним 20/07/16 Срд 01:44:30  800891
>>800664
CREATE temp_table AS SELECT * FROM articles WHERE 1 = 0;
-- тут примапливаешь csv с соответствием идентификаторов к базе как external table
CREATE old_id_tbl (old_id NUMBER, new_id NUMBER) ORGANISATION EXTERNAL ...
INSERT INTO temp_table SELECT old_id, .... FROM old_id_tbl o LEFT JOIN articles a ON o.new_id = a.id;
COMMIT;
RENAME TABLE articles TO articles_old;
RENAME TABLE temp_table TO articles;

Но в принципе, имея csv из второго пункта проще будет регуляркой его преобразовать в 1000 UPDATE'ов и прогнать из через консоль.

А вот сам csv сложнее получить - возможно надо сделать джоин через функцию SIMILAR или ту, что ищет похожесть звуков, через заголовки статей. Но если заголовки мигрировали без изменений, то можжно просто джоин по ним сделать.
Аноним 20/07/16 Срд 14:27:17  801201
ДБАны, к следующему треду сделайте нормальную шапку.
А также посоветуйте книгу по Oracle PL/SQL для разработчиков (посвежее).
Аноним 20/07/16 Срд 15:03:25  801226
>>801201
Читай доку, она самая свежая.
Аноним 20/07/16 Срд 23:26:18  801707
>>801201
Том Кайт. Оракл для профессионалов. Или ещё какая хуйня от Тома, он их несколько запилил.
https://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:8191916000346674643
> посвежее
Pl/sql так сильно поменялся с 10 по 12 версии?
Аноним 21/07/16 Чтв 00:36:19  801757
14690505799170.jpg (7Кб, 147x147)
А вот господа, кто поедет в этом году на VLDB?
Аноним 21/07/16 Чтв 02:49:45  801788
14690585860990.png (89Кб, 265x265)
>>801757
проиграл с названия конфы
Аноним 21/07/16 Чтв 07:33:16  801825
>>801707
Кайта в топку, тем более, ему книги давно индусы пишут.
Аноним 21/07/16 Чтв 22:08:57  802368
>>801825
Как будто оракл не переехал в Индию.
Аноним 22/07/16 Птн 20:57:39  802913
>>801788
Конференции и её названию уже 42 года, менять они его не собираются.
Аноним 23/07/16 Суб 12:04:30  803356
Посоветуйте литературы по T-SQL, чтобы стать Йота-архитектором, а не просто уметь в селекты с джойнами.
Аноним 23/07/16 Суб 12:07:20  803358
>>803356
разве в архитектуре бд важно знание расширения для языка запросов?
Аноним 23/07/16 Суб 15:04:42  803478
посоветуйте литературы по sql
Аноним 23/07/16 Суб 20:31:51  803657
Аноны, привет.
Работает кто-нибудь из вас в области КАЧЕСТВА ДАННЫХ?
Предложили перевод в должноть миддла, но выглядит сомнительно. Есть ли перспективы?
Аноним 24/07/16 Вск 04:47:39  803895
А сколько записей держит mysql? Так чтоб не тупила по 5 сек на каждый запрос.
Аноним 24/07/16 Вск 21:23:23  804492
>>803895
>Так чтоб не тупила по 5 сек на каждый запрос.
С индексами или без? Запрос на чтение или запись?
Аноним 25/07/16 Пнд 05:18:54  804754
>>804492
Чтение. С индексами.
Аноним 25/07/16 Пнд 12:54:04  804936
>>761640
А в треде написать, чтобы все могли пользоваться, религия не позволяет?
Аноним 25/07/16 Пнд 12:56:45  804939
Что почитать по MySQL и PostgreSQL?
Почему нормальной шапки нет
Аноним 25/07/16 Пнд 14:18:12  805017
>>803356
Тогда твой выбор - это "SQL-EX"
Аноним 25/07/16 Пнд 14:22:38  805020
>>800664
Что насчёт SET IDENTITY_INSERT ON?
Можно же просто вставить те айдишники, которые у статей были.
Аноним 25/07/16 Пнд 14:31:55  805035
>>805020
SET IDENTITY GENDER FLUID;
Аноним 25/07/16 Пнд 15:00:37  805082
>>804939
up
Аноним 25/07/16 Пнд 15:18:48  805102
>>804939
Кому-то нужна книга "mysql+php для чайников", а кому-то "Хранимые процедуры на C в PostgreSQL". Предлагаешь их все перечислить в шапке? Читай документацию, блоги и вопросы на стековерфлоу. Можешь начать с запроса в гугле "твоеназвание_базыданных books stackoverflow", это ведь не сложно, правда?
Аноним 25/07/16 Пнд 15:30:08  805107
Анон, посоветуй годный задачник по составлению запросов для постгресовской бд. Хочу от простеньких, до хитровыебанных quizzes и дампом базы данных для них. В количестве 100-200 штук задачек. Ну мало ли что хочу, буду рад тому чому дадите. Спасибо Анон.

Хочу порешать, да себе на гит выложить, вотъ лалка.
Аноним 25/07/16 Пнд 20:40:03  805452
>>805102
>Предлагаешь их все перечислить в шапке
Почему нет? В других тредах нормальные объёмные шапки, из которых всё становится понятно, только у вас какой-то обрубок.
Можно было бы расписать про то, какие базы данных для каких целей юзают, в связке с чем и т.п.
Аноним 27/07/16 Срд 10:10:33  806653
как быстро загуглить стейтмент, который будет проверять, входит ли значение колонки в определенный набор данных, а потом вернет количество по каждому из значений в заранее сгруппированной коллекции?

SQL Server, если что

сам охуел от того говна, что высрал тут

вот есть у меня таблица со статусами и датами. мне нужно отобрать все, что имеют статус А, В и С, к примеру. далее все это говно группирую по дате и нужно вернуть АСount, BCount и как вы догадались CCount. почему-то мне в голову пришел pivot, но чет я неуверен

есть готовое решение, которое гласит sum(case when status = 'A' then 1 else 0 end), но это пиздец, ящитаю
Аноним 27/07/16 Срд 13:06:48  806716
>>806653
можно забить на этот вопрос потому, что у меня возник такой: как можно сравнить эффективность/перфоманс двух запросов: через PIVOT/COUNT и через SUM(CASE WHEN)?
план выполнения обоих запросов говорит, что бОльшую часть времени будет занимать сортировка (60%) и поиск по индексам (~40%), что ни о чем не говорит в плане сравнения эффективности.

тестовых данных у меня полторы штуки. есть возможность как-либо аналитически сравнить оба плана, не прибегая к генерации охулиарда фейкоданных?
Аноним 27/07/16 Срд 19:49:54  806935
>>806716
даже на достаточно слабой, как для сервера, машине оба варианта отрабатывают менее, чем за секунду. действительно ли надо генерировать миллионы записей, чтобы было дело?
Аноним 28/07/16 Чтв 13:13:12  807351
Господа. дали задачу написать процедуру загрузки данных в таблицу БД MS SQL Server из csv
Я немного нуб в этом. МОжете посоветовать литературу для чтения, дабы это сделать?
Аноним 28/07/16 Чтв 13:49:20  807367
>>790021
спасиб, анон
Аноним 04/08/16 Чтв 17:50:22  813113
Есть таблица в MySql с 3 заголовками. Как сделать чтобы, строка 3 заголовка формировалась при соединении строк из 1 и 2 заголовков с перекодированием результата соединения, например, в 16-ричную СС?
Аноним 04/08/16 Чтв 21:29:55  813308
14703353958540.jpg (5Кб, 224x225)
>>807351
Опа, поддвачну этого. Сам я нуб-мимокрокодил из C#-треда.
Аноним 05/08/16 Птн 11:19:09  813641
>>813308
Гугли про DTS. Там чуть ли не мышкой все делается.
Аноним 05/08/16 Птн 14:52:22  813774
>>735299 (OP)
Объясните, какой вообще смысл во всех этих орм/персистансах и остальных товарищах?

Я вот всегде все бизнес-процессы с данными выносил в хранимые процедуры на стороне БД и уже из приложения вызывал их по необходимости. Но я в основном работал с ораклом, а там это всё хорошо и производительно на PL\SQL делается.
Аноним 05/08/16 Птн 15:07:35  813785
На собеседованиях часто спрашивают опыт оптимизации неопмтимальных запросов. Есть ли какие кейсы что почитать, с примерами оного. Я по большей части с CMS работаю, высоких нагрузок нет, так что сам ничего не оптимизировал.
Аноним 05/08/16 Птн 16:20:56  813835
14704032567540.jpg (45Кб, 626x218)
>>813641
Какой из них?
Аноним 05/08/16 Птн 16:41:15  813854
>>813774
1) В старых MySQL не было хранимок,
2) Индусы, сэр_
Аноним 05/08/16 Птн 16:48:17  813867
>>813854
Т.е. никаких профитов, кроме сомнительной абстракции от БД в итоге нет?
Аноним 05/08/16 Птн 17:06:18  813891
>>813835
Ты совсем что ли даун? MSSQL+DTS гугли.
Аноним 05/08/16 Птн 17:10:03  813896
>>813785
Обычно все сводится к тому, чтобы убрать фуллсканы и заставить работать запрос по индексам, но это какбэ начальный уровень.

Можешь почитать статью:
http://www.fors.ru/upload/magazine/07/http_text/russia_mihjeichev_plan_recomendations.html
Аноним 05/08/16 Птн 17:44:07  813916
>>813891
Ну пошутил же блядь, ну ебана.
Аноним 05/08/16 Птн 19:26:56  813974
есть адекватированные источники, и которых можно почерпнуть многа интереснава про query hints, желательно в контексте sql server?
microsoft technet вызывает мучительные муки и нахуй так жить с такой справкой
Аноним 06/08/16 Суб 13:08:07  814496
Аноны, допустим я сделал себе сайт с монгодб в качестве базы. Я не сосну залив его на хостинг? Хостинг должен поддерживать возможность монгодб?
Аноним 06/08/16 Суб 17:01:41  814667
>>814496
кошешно нет, зачем тебе установленная субд на месте, где будет работать приложение?
Аноним 10/08/16 Срд 02:42:59  816985
>>813974
Sql ex же
Аноним 10/08/16 Срд 02:46:40  816986
>>813785
Юзать индексы, свести к минимуму вложенные запросы, а там, где они есть и возвращают много данных, заменить их на временные таблицы.
Избегать сравнения по строкам, предпочитать айдишники, не забывать про оконные функции, которыми можно решить очень много задач, которые иначе решаются через Ж.
Из моего опыта все.
Аноним 10/08/16 Срд 02:50:53  816988
>>807351
Гугли
1. Импорт данных (самый нубский способ)
2. Линкед-сервер на Excel-файл - уже интереснее
3. Импорт данных в Sql-сервер через SSIS - самое занимательное, ибо есть интерфейсик, диаграммки и пр. ништяки
4 если извращенец, можно написать макрос в Excel, который будет экспортить данные из него в БД, но это уже не csv, конечно, а xlsmбудет
Аноним 10/08/16 Срд 15:18:28  817190
Привет. Как думаете, если я в этом треде буду задавать всякие нубские вопросы по Oracle (ответов на которые предварительно не нашел в гугле), вас это будет не очень сильно бесить? Очень хочется спрашивать, а не у кого.
Аноним 13/08/16 Суб 11:14:13  818885
есть MS SQL Server (edition-ы варьируются от энвайрмента к энвайрменту, но я не думаю, что это суть важно), есть таблица с одним внешним ключом
при попытке запихнуть в туда порядка 1М записей, даже тривиальный SELECT COUNT(Id) (где на Id висит дефолтный кластерный индекс правда этот Id имеет тип UNIQUEIDENTIFIER) выполняется уже секунды. при запихивании 5-6М строк, скорость запроса падает до <30 секунд.
от чего, исключая характеристики железа, может зависеть такое падение производительности несложного запроса? я далек от мысли, что SQL Server не в состоянии из коробки без спецбубна поддерживать подобные размеры таблиц
Аноним 13/08/16 Суб 21:46:15  819265
>>818885
М - это что?
Внешний ключ смотрит на какую таблицу? Мб у тебя таблица, на которую оьращен форин ки - это справочник из ста миллиардов непроиндексированных записей?
Записи инстертишь в рамках одной базы(одного сервера)?

Сразу приходит в голову затестить скорость инсерта без индексов и сравнить результаты.
Аноним 13/08/16 Суб 22:05:45  819290
>>819265
M - это миллион

внешний ключ смотрит на таблицу, в которой в лучшем случае ожидается максимум из 30ти записей. но даже если и нет, я же упоминал, что тривиальный SELECT COUNT(Id) работает также ужасно, как и SELECT .. FROM .. LEFT JOIN .. WHERE.. и вот тут, кстати, я подумал о статистике таблицы/индекса. но, покопавшись в гуглах, не нашел вкриков, подтверждающих падение скорости работы из-за неактуальной статистики, внезапно ставшей такой после миллионного инсерта. пока только "если статистика плохая, то". а хуй его знает, чем хорошая отличается от плохой

инсерт происходит в рамках одной базы, конечно

> Сразу приходит в голову затестить скорость инсерта без индексов и сравнить результаты
"без индексов" - ты имеешь ввиду, отключив их? включая кластерный (или с кластерным такая срань не получится?)? ну а что это мне, по сути, даст - плохой джоин, либо переход планировщиком запроса на HASH JOIN и увеличение количества ресурсов на обслуживание запроса?
Аноним 13/08/16 Суб 23:51:53  819352
>>818885
Чтобы посчитать твой COUNT нужно выгребсти все записи из таблицы. То есть весь миллион или несколько миллионов. Я бы сделал пару сиквенсов. Один для insert'ов, другой для delet'ов. Обновлял бы их триггерами. Число записей определял бы как разницу между числом вставок и удалений. Решение громоздкое, без базара. Вопрос насколько тебе нужен этот COUNT. Может можно без него обойтись? Или сгодится приближенное значение из статистики?
Аноним 14/08/16 Вск 00:15:06  819366
>>819290
Если ты джойнишь левым джойном маленькую таблицу к большой, запрос будет выполнятся примерно так: для каждой записи большой таблицы ищем соответствующую строку в маленькой. То есть все записи большой таблицы обходятся циклом, если нет where по индексированным колонкам большой таблицы, которые ограничивают размер выборки. Используй лимиты, или ограничь выборку условиями. Тебе ведь не нужен весь миллион записей сразу?
Аноним 14/08/16 Вск 08:46:59  819453
>>819352
> Вопрос насколько тебе нужен этот COUNT
конкретно count мне и другим) вообще не нужен. передо мной встал вопрос сравнения в плане быстродействия двух разных запросов для отчетов с немалым количеством записей. когда я хотел посмотреть, над каким объемом данных данный момент выполняется манипуляции, тут же оказалось, что сложные (относительно) запросы отрабатывают по времени, сравнимым с подсчетом количества записей в таблице. такой факт стал для меня откровением, чессгря)

>>819366
> Тебе ведь не нужен весь миллион записей сразу?
на данный момент нужен. я верю, что есть более адекватное решение для данного отчета, но пока используем, что используем

> для каждой записи большой таблицы ищем соответствующую строку в маленькой
но ведь построитель запросов умнее, чем среднестатистический пользователь (вроде как) и перемешивает заджоиненные таблицы таким образом, дабы нанести наименьший ущерб производительности. именно для такого случая и придуман хинт FORCE ORDER. ведь так? вангую, привалится сейчас ко мне и еще одно откровение
Аноним 14/08/16 Вск 12:47:04  819542
>>806653
select count(case status when 'A' then 1 end) acnt,
...
dte
where status in (...)
group by dte


Но если есть индекс на status, то может быть быстрее подзапросами посчитать.

Или же посчитать count по группам дата-статус в WITH AS Select подзапросе, а потом сжоинить но датам.
Аноним 14/08/16 Вск 13:39:10  819584
Как импортировать dbf-таблицу в MySql?
Аноним 15/08/16 Пнд 01:56:37  820090
>>735299 (OP)
Братишки, бд-ишки, поясните, пожалуйста, про уровни изоляции в MS SQL, что это такое, с чем едят и т.п.
Msdn не предлагать, там не очень понятно описано.
Аноним 15/08/16 Пнд 02:00:51  820092
>>818885
А что ты хотел от миллиона записей?
Ты видел примеры, где тривиальный каунт выполняется быстрее секунды для таблицы с 1кк записей?

В общем, вполне ожидаемый результат, на мой взгляд. Если нет, приведи пример, где это работает быстрее.
Аноним 15/08/16 Пнд 06:39:55  820119
>>819453
Партиционируй.
Используй таймстампы в запросах.
Не верю что отчету нужен миллион записей они же всегда по ограниченному временному диапазону
Аноним 15/08/16 Пнд 06:41:35  820120
>>820119
А ну и да.
Норм отчеты это уже не олтп а олап если ты понимаешь о чем я
Аноним 15/08/16 Пнд 07:42:23  820130
>>820090
википедию предлагать? там чуть понятней написано

>>820092
видел только в маняфантазиях. я ведь уточнял, как мне казалось, это не те объемы, о которые СУБД подобного уровня будут спотыкаться, но..
в любом случае, любой запрос выполняется очень долго, даже если имеет дело только с индексированными столбцами. я вот пытаюсь понять, как так то

>>820119
судя по заверениям клиентов, работа всегда будет происходить с десятками тысяч записей. это была лично моя инициатива протестировать на миллионах
Аноним 15/08/16 Пнд 08:29:00  820139
>>753014
Гугли документацию по %name%SQL DB, там все просто.
Аноним 15/08/16 Пнд 13:01:23  820273
>>820130
>судя по заверениям клиентов, работа всегда будет происходить с десятками тысяч записей. это была лично моя инициатива протестировать на миллионах

Преждевременная оптимизация - плохо. Ты можешь просто рандомом углубиться в А и Б, когда реальной проблемой окажутся В, Г и Д. Задачи оптимизации надо решать на конкретных ситуациях по мере их поступления. Иначе у тебя могут появиться оптимизационные костыли там, где это не обусловлено никакой необходимостью, а это лишние WTF? у разработчиков.
Аноним 15/08/16 Пнд 13:31:33  820284
>>820273
мы, сдается, уже порядком отклонились от моего изначального вопроса) суть была в том, что, начиная с определенного порядка записей в таблице, существенно падает производительность любых запросов: с подсчетом записей, либо с соединением, лиоб с условием по столбцу, не входящему в какой-либо из существующих индексов
меня интересовало, как вычислить/найти тот порог, а главное: почему COUNT() и JOIN-WHERE работают одинаково плохо (хотя мне казалось, что между этими запросами есть гигантская разница).
если этот человек >>819352 прав, то, в принципе, я все понял
> Чтобы посчитать твой COUNT нужно выгребсти все записи из таблицы
Аноним 15/08/16 Пнд 14:30:24  820325
Помогите с mysql. Есть два сервера с мастер-слэйв репликацей.
Стартует Слэйв, все в порядке, потом встает на определенной позиции и все.
Мастер же в свою очередь идет вперед.
Если сделать слэйв-стоп - слэйв старт, слэйв сразу догоняет эту позицию и идет дальше, пока не остановится опять.
Поставил пропуск всех ошибок, но не помогло. Что может быть?
Аноним 15/08/16 Пнд 15:26:20  820372
>>735299 (OP)
Надо выучить СюКвЛ.
С чего начать?
Аноним 15/08/16 Пнд 16:35:00  820431
>>820372
с сайта sql-ex. ru
Там есть и теория, и примеры, и задания.
Аноним 16/08/16 Втр 00:17:05  820752
>>754121
Блядь да ответьте ужевот на этот пост. Я другой анон но ситуация схожая.
Аноним 16/08/16 Втр 15:39:05  821050
>>820752
Да как же вы заебали, ньюфаги.
Куришь Oracle Database Concepts, потом Oracle Administration guide, 732 и 1078 страниц соответственно. Анон, я верю, у тебя получится!
Аноним 16/08/16 Втр 15:41:48  821054
>>819352
>Я бы сделал пару сиквенсов. Один для insert'ов, другой для delet'ов. Обновлял бы их триггерами.
Вот за это яйца отрывать. Производительность вставки падает минимум на порядок.
Аноним 24/08/16 Срд 00:23:13  826109
Аноны, хочу сделать workflow на конечном автомате с персистентным хранилищем состояния. Insert-only, то есть каждый шаг бизнес-процесса - новая запись, которая уже не изменяется, конкуренции нет, вставка должна быть очень быстрой. Но нужна возможность вопстроения аналитических выборок по ключам, в том числе составным. Что посоветуете?
Аноним 24/08/16 Срд 09:44:22  826207
Лень гуглить - спрошу тут. Если у меня индекс по двум сразу полям, то будет ли он помогать, если в запросе фильтрация только по одному из них?
Аноним 24/08/16 Срд 10:31:26  826227
>>826207
очередность полей в индексах и предикатах желательно сохранять. иначе говоря, если фильтруемое поле в индексе идет первым. эффективность такого индекса будет хорошей
Аноним 25/08/16 Чтв 00:08:44  826796
>>826109
Какая субд?
Очень быстрая вставка - это какая? Инсерт онли - это значит, что во время инсерта однозначно не будет обращения к таблице?

С какой частотой будут инсерты у тебя?
Если нужна мега-скорость, то думаю, придется поебаться с Редисом, тут советовать ничего не могу, с ним почти не работал.
А калссически твою задачу можно решить через SSIS + Ms Sql Server:
в SSIS рисуешь свой воркфлоу, как захочешь, и определяешь четкую последовательность этапов. На мой взгляд, очень удобная штука. Но тут, конечно, класическая реляционна субд, мб тебе такая не подходит.
Аноним 25/08/16 Чтв 11:43:46  826999
>>826796
>Какая субд?
Ну riak например.
>Инсерт онли - это значит, что во время инсерта однозначно не будет обращения к таблице?
Смысл такой - конечный автомат на каждом шаге меняет состояние объекта. Соответсвенно на каждом шаге после успешного выполнения необходимо сохранять новое состояние объекта, для реализации возможности восстановления актуального состояния объекта и продолжения работы автомата в случае его аварийного останова. Поскольку необходимо хранить полную историю работы автомата, имеет смысл каждое новое состояние объекта хранить как новую запись. Фактически для каждого процесса исполняемого автоматом создается очередь, в которую на каждом шаге помещается новый элемент. То есть фактически конкуренция за записи в таблце между исполняемыми автоматом процессами отсутствует, просто атомарная вставка нового элемента. Но может быть балковое удаление истории и построение статистики. Можно кончено на реляционой сделать - но будет оверхед.
>С какой частотой будут инсерты у тебя?
Тысячи в секунду. Главное условие - минимальное время на сохранение состояние в общем времени выполнения процесса.
Аноним 26/08/16 Птн 09:56:10  827555
14721945702450.png (299Кб, 500x656)
>>735299 (OP)
Аноны, ай нид хэйп.
На днях меня ждет собеседование и мне нужно на выходных подтянуть знания по администрированию MSSQL Server (2014 судя по всему). Какую книгу можно скачать по теме? Желательно не для профессионалов этого дела, для новичков. Плюс надо почитать немного о написании процедур на T-SQL. Хэлп!
Аноним 26/08/16 Птн 09:56:28  827556
14721945886170.png (299Кб, 500x656)
>>735299 (OP)
Аноны, ай нид хэйп.
На днях меня ждет собеседование и мне нужно на выходных подтянуть знания по администрированию MSSQL Server (2014 судя по всему). Какую книгу можно скачать по теме? Желательно не для профессионалов этого дела, для новичков. Плюс надо почитать немного о написании процедур на T-SQL. Хэлп!
Аноним 26/08/16 Птн 10:13:31  827560
>>827556
microsoft technet?
Аноним 26/08/16 Птн 10:15:25  827563
14721957257360.jpg (51Кб, 460x604)
>>827560
Я сейчас уезжаю на все выходные туда, где с интернетами будет туго, нужна именно книга.
Аноним 26/08/16 Птн 10:17:27  827564
>>827563
ну тада BOL
Аноним 27/08/16 Суб 16:28:30  828752
14723045105390.jpg (64Кб, 450x796)
Аноны-анончики, а как мне сделать таблицу рейтинга (leaderboard), но так, чтобы работала с большим кол-вом (лямы) записей?

Сейчас это просто одна таблица с очками, и если требуется выдать топ-100, то я тупо использую ORDER BY. Но ведь эта тема загнется, если записей станет очень много. Как в таком случае поступать? Сделать таблицу с уже отсортированными результатами и периодически в нее сортировать? Сам процесс сортировки тоже займет много времени. Если какие-статьи на тему?

Что приходит в голову, это делать таблицу чанков, с такими полями: score_from, score_to. В начале есть только один чанк от 0 до 10000. При постинге очков система находит нужный чанк, и добавляет запись в него. Если размер чанка становится слишком большим, то он разбивается на два подчанка: score_from .. (score_from + (score_to - score_from) / 2) и (score_from + (score_to - score_from) / 2) .. score_to. А потом система сортирует отдельно только записи в этих чанках.

Какие подводные камни?
Аноним 27/08/16 Суб 17:16:01  828805
>>828752
Ты протестировал когда она начнет загибаться? Скорее всего на твоих данных не начнет, ORDER BY ... LIMIT 100 не будет сортировать таблицу целиком. Если у тебя действительно такие большие данные/требования по латенси/хуёвая машина что подход с сортировкой начнет загибаться, просто заведи таблицу top_100 (на 100 строчек очевидно) и добавляй/удаляй/апдейти в ней записи на каждое изменение счета. Если измнений очень много тебя спасут батчи/какие-то хитрые оптимизированные sql запросы/МОЩНЫЕ хранимки.
Аноним 27/08/16 Суб 18:20:24  828868
Анон, подскажи, можно ли в postgres использовать переменные? В mysql можно прямо в запросе писать @x := something, и в этом же запросе использовать. Но я использую постргес, и как это сделать там - не могу найти. У меня есть один очень сложный запрос, в котором пару десятков раз вызывается одна и та же функция с одинаковыми параметрами (но для каждой обрабатываемой строки параметры отличаются), и хотелось бы как-то закешировать это значение в рамках запроса для каждой строки. Подскажите, плиз, что тут можно сделать.
Аноним 27/08/16 Суб 22:57:04  829074
>>828752
Разве индекс по сортируемому полю не поможет?
Аноним 28/08/16 Вск 00:43:43  829114
>>828752
Посмотрите на этого уёбка, который пытается построить B-tree на базе данных.

Мудила, сделай индекс и не ссы.
Аноним 28/08/16 Вск 15:09:38  829482
Есть таблица, куда логируются некие события. Надо получить список периодов, когда не было событий. Накатал:
select begin_date, end_date from (select prev_val begin_date, next_val - 1 end_date from (
select prev_val, next_val, row_number() over (partition by grp order by next_val) rn from (
select prev_val, next_val, sum(g_start) over(order by next_val) grp from (
select
lag(time_key + 1) over(order by time_key) prev_val,
time_key next_val,
case when time_key = lag(time_key + 1) over(order by time_key) then 1 else 0 end g_start
from some_table)))
where rn > 1);

Норм?
Аноним 29/08/16 Пнд 20:11:05  830639
>>829482
у тебя time_key имеет тип timestamp?
Аноним 29/08/16 Пнд 20:57:47  830691
Аноны, дайте какой-нибудь гайд для дебилов по PostgreSQL, где прям для даунов все разжевывается.
Аноним 29/08/16 Пнд 21:02:33  830696
>>830691
https://www.amazon.com/Beginning-Databases-PostgreSQL-Novice-Professional/dp/1590594789
Аноним 29/08/16 Пнд 23:41:09  830870
>>830639
date
Аноним 30/08/16 Втр 08:53:12  830988
>>830870
но ведь самый нижний подзапрос

select
lag(TimeKey + 1) over(order by TimeKey) prev_val,
TimeKey next_val,
case when TimeKey = lag(TimeKey + 1) over(order by TimeKey) then 1 else 0 end g_start
from SomeTable

дает инвалидкастэксепшн:

Сообщение 206, уровень 16, состояние 2, строка 2
Конфликт типов операндов: date несовместим с int
Аноним 30/08/16 Втр 17:37:44  831348
Подскажите, как в MySQL сделать Count c Group by по двум полям и тут же по одному (исключая одно из них), можно ли без подзапроса, если нет, то как эффективнее?
Аноним 31/08/16 Срд 06:02:45  831736
Всем счастья, здоровья. Нормально ли для таблицы иметь 100 столбцов? Просто никогда столько не требовалось, а сейчас нужно создать и меня смущает этот размер.
Аноним 31/08/16 Срд 13:29:24  831916
>>831736
Смысловая нагрузка этих столбцов? По всем выборку делать собрался, индексировать хочешь?
Аноним 31/08/16 Срд 19:30:52  832188
>>831348
Предметно задачу опиши, что такое Count по двум полям?
Аноним 31/08/16 Срд 19:34:35  832192
>>831736
Нормально.
Для таблицы фактов - вполне, если почти все столбцы -айдишники(FK)
Для справочника - возможно, если уж у тебя столько важных атрибутов для каждого элемента.

Если у тебя в каждом из ста полей какое-то значение, типа затраты, количество, нормативные расходы, комерч. расходы и так далее, я бы советовал их, все-таки записывать в столбец Value напротив идентификатора, ссылающегося на соответствующий элемент справочника.
Аноним 31/08/16 Срд 19:39:39  832195
>>828868
Можно, но только в функциях. В одычных запросах только т-скл, только хардкор.
Аноним 31/08/16 Срд 21:01:08  832284
>>831348
> делать Count c Group by по двум полям и тут же по одному (исключая одно из них)
Через аналитические функции:
> SELECT
> actor_id,
> first_name,
> last_name,
> last_update,
> count() OVER (PARTITION BY first_name, last_name) AS firstLastNameCount,
> count(
) OVER (PARTITION BY last_name) AS lastNameCounter
> FROM actor
> ORDER BY firstLastNameCount DESC;

> Подскажите, как в MySQL
Никак. Использовать нормальные реляционные БД, позволяющие что-то сложнее круда.
Аноним 31/08/16 Срд 21:08:37  832297
>>832284
UNION не?
Аноним 31/08/16 Срд 21:08:41  832298
>>832284
> Никак.
Без подзапросов*

CTE, кстати, тоже не подерживает, так что делай подзапрос. Сделай его еще раз! Еще подзапрос в подзапросе!
Аноним 31/08/16 Срд 21:12:10  832302
>>832297
Юнион что? Колонки с агрегированными данными будут разными.
Аноним 31/08/16 Срд 21:12:14  832303
>>832284
Так mysql поддерживает оконные функции же?
Аноним 31/08/16 Срд 21:14:54  832307
>>826999
С такой частотой не работал никогда, так что тут ничего не могу подсказать. Ребята в стартапе, с которыми я работал, юзали Редис для таких целей, но что-то он больно ебанутый, куча багов, поддерживать сложно.
Аноним 31/08/16 Срд 21:17:11  832308
>>832302
(SELECT 'first_agg' AS name, COUNT() FROM table GROUP BY x, y) UNION (SELECT 'second_agg' AS name, COUNT() FROM table GROUP BY x) не прокатит? Я вообще в скл не очень шарю
Аноним 31/08/16 Срд 21:18:55  832310
>>832303
https://dev.mysql.com/doc/refman/5.7/en/ в крайней версии не выкатили.
Аноним 31/08/16 Срд 21:26:49  832324
>>832308
Работать будет (если пофиксить первые колонки в резалт сете), но получится дикая хуйня:
> John--Smith--5 (первая кверя)
> John--Smith--50 (вторая)
И как ты будешь отличать в резалт сете какая строка из какого запроса? Можно ввести суррогатный флаг, но получится еще более дикий костыль, противоречащий философии SQL - ты ебешься с разбором результата, а не формируешь запрос и получаешь нужные данные, которые используешь. Лучше уж через подзапросы.
Аноним 31/08/16 Срд 21:29:13  832329
>>832324
Я вообще-то думал, что получится:
name count
first_agg 5
second_agg 50
Где я ошибся?
Аноним 31/08/16 Срд 21:36:54  832335
>>832329
> name
> first_agg
> second_agg
Что за магические сущности? В результате при группировке могут быть только агреггирующие функции и колонки по которым ты делаешь группировку. То есть в первом запросе x, y, count() (или x, count() / y, count() / count()). Во втором же только х и аггрегирующая функция.

Алсо не получится из второго запроса взять John--Smith--50 (вторая), ибо смит не используется в группировке.
Аноним 31/08/16 Срд 21:40:15  832340
>>832335
Нахуй нам джон смит? Если я правильно понял вопрос, нам нужно получить количество строк (или джон смитов, не важно) из таблицы, сгруппированой по:
1) полям x, y
2) только по полю x
Мой запрос выбирает это в 2 подзапроса, а чтобы различать строки после объединения - в каждую строку добавляется константное имя как "name". Что не так?
Аноним 31/08/16 Срд 21:49:19  832358
>>832340
А, ты имеешь в виду суррогатный флаг.
> Что не так?
> Можно ввести суррогатный флаг, но получится еще более дикий костыль, противоречащий философии SQL - ты ебешься с разбором результата, а не формируешь запрос и получаешь нужные данные, которые используешь.
Вот что не так.

> Нахуй нам джон смит?
Джонсмит не нахуй, а нужен. А вот обезличенные строки каунтов с суррогатными флагами нужны вряд ли

> Подскажите, как в MySQL сделать Count c Group by по двум полям и тут же по одному (исключая одно из них), можно ли без подзапроса, если нет, то как эффективнее?
Очевидно, что в резалт сете нужны эти два поля, а не просто строчки обезличенных счетчиков.
Аноним 31/08/16 Срд 21:56:07  832366
>>832358
>Очевидно, что в резалт сете нужны эти два поля, а не просто строчки обезличенных счетчиков.
Не очевидно. В вопросе про это ничего, так что может и не нужны.
Аноним 31/08/16 Срд 22:02:40  832371
>>832366
С трудом могу представить нахуя нужна подобная таблица
first_agg 2
first_agg 5
second_agg 40
second_agg 9
second_agg 95

Даже на хуй намотать не получится.
Аноним 31/08/16 Срд 22:09:23  832379
>>832371
да почему у тебя получается много строк? Каждый подзапрос в моем запросе возвращает одну строку, с результатом COUNT(звездочка) и именем.
Аноним 31/08/16 Срд 22:18:20  832391
>>832379
> Каждый подзапрос в моем запросе возвращает одну строку, с результатом COUNT(звездочка) и именем.
> одну строку
Даладна.

Ты делаешь группировку по х,у или х.

х--у--z
Джон--Смит--Младший
Джон--Смит--Пидор
Джон--Уеба--Мастер
Тянучка--Еотовна--Шлюха
Тянучка--Еотовна--Шалава
Тянучка--Просто--Блядь

Группировка по х тебе даст
[Джон] secondAgg--3
[Тянучка] secondAgg--3

По ху даст
[Джон--Смит] firstAgg--2
[Тянучка--Еотовна] firstAgg--2
Аноним 31/08/16 Срд 22:20:28  832395
>>832391
ага, а потом к этой группировке применяю COUNT(звездочка), который возвращает скаляр. Другие же поля я не выбираю
Аноним 31/08/16 Срд 22:22:19  832398
>>832391
Применение моего запроса к твоим таблицам выдаст следующий результат:
first_agg 2 (по x)
second_agg 4 (по x, y)
Аноним 31/08/16 Срд 22:24:25  832402
>>832398
Соответственно вот и применение результата:
1 аггрегация - количество тезок по имени
2 аггрегация - количество тезок по имени и фамилии.
Конкретные имена и фамилии нам нахуй ненужны, только статистика
Аноним 31/08/16 Срд 22:26:06  832404
>>832402
Не, тут я чет напутал. Забей на это сообщение, не ебу что нам дает эта выборка
Аноним 31/08/16 Срд 22:27:35  832405
>>832395
>>832398
Про груп бай забыл. При группировке твой каунт используется как аггрегирующая функция. Группирующиеся джоны и тянучки аггрегируются по твоему говну, что ты захуячил вместо аггрегирующей функции. То есть считаются джоны и тянучки. Именно джоны И тянучки. Не все люди в таблице. Каунт посчитает всех и вернет 1 строчку если уберешь группировку.

>>832404
Не прошло и двух часов.
Аноним 31/08/16 Срд 22:30:35  832409
>>832405
COUNT(звездочка) посчитает количество строк в получившейся после группировки таблице. Похуй ему на джонов и тянучек, он всегда вернут скаляр. А так как у нас в селекте только 2 скаляра - "суррогатный флаг" и каунт, то и результатом выборки будет только 1 строка. Проверь запрос, если не веришь
Аноним 31/08/16 Срд 22:36:41  832416
>>832409
> COUNT(звездочка) посчитает количество строк в получившейся после группировки таблице
А вот хуй тоби. Каунт используется как аггрегирующая функция из-за наличия груп бай. Груп бай убери и будет тебе количество строк.

Заебался я тебе объяснять очевидное. На сакиле выполни запрос и помедитируй над результатом.
SELECT
'second_agg' AS name,
COUNT(*)
FROM actor
GROUP BY first_name;
Аноним 31/08/16 Срд 22:39:20  832420
>>832416
Да, я чуть ошибся, но результат это не меняет - после UNIONа, одинаковые строки схлопываются в одну, и в итоговом результате - будет 2 строки
Аноним 31/08/16 Срд 22:47:50  832431
>>832420
> одинаковые строки схлопываются в одну
И у тебя строки
firstAgg 1
firstAgg 1
firstAgg 1
firstAgg 1
firstAgg 1
схлопываются в
firstAgg 1
Без всякого аггрегирования, т.к. юнион склеивает второй результат с первым с сносит дубликаты строк
> в итоговом результате - будет 2 строки
Придурошный, не будет 2 строки.
firstAgg 1
firstAgg 2 не схлопнутся магическим образом в firstAgg 3.
А
firstAgg 1
firstAgg 2
у тебя будет из-за группировки внутреннего селекта и каунта.

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

А лучше выброси компьютер в окно и не подходи к компьютерной технике примерно никогда, пока как бы чего не вышло.
Аноним 01/09/16 Чтв 00:06:16  832492
>>832431
Как вы понимаете, что он хочет получить? Я так и не увидел, какой результат он ожидает, только посчиать количество тесок по именам и по именам и фамилиям.

Я не понимаю, что в результате он ожидает?
name, null, amount
name, second_name, amount
Так?
ms-sql/t-sql Аноним 01/09/16 Чтв 08:15:57  832557
Аноны, поможите: есть таблица, для которой хочу сделать универсальную хранимую процедуру для обновления различных столбцов. К примеру, в таблице 5 столбцов, как мне написать одну хранимую процедуру, чтобы можно было изменить данные в любой комбинации столбцов (ну там типа 1, 1 и 2, 1 и 3... 1,2,3,4 и 5 и т.д.)? Пока что единственное, что мне приходит в голову - написать (n!) процедур, где n - количество столбцов, но это же пиздец. Или обновлять записи целиком, типа даже если изменился один столбец, я пишу процедуру, которая обновляет все столбцы?
Аноним 01/09/16 Чтв 08:46:24  832569
>>832557
> универсальную хранимую процедуру для обновления различных столбцов
В коде приложения напиши абстрактный дао / репозиторий с крудом и конкретные дао / репозитории наследуй от него, и юзай круд, а более сложные методы пиши в конкретных дао.

А не занимайся херней с переносом кода приложения в SP.
Аноним 01/09/16 Чтв 13:43:28  832723
Элитный дба в треде с базами на много TB, спрашивайте ответы
Аноним 01/09/16 Чтв 21:29:14  833168
>>832557
А как ты апдейтить хочешь? Различными условиями с кучей кейсов и where-ов или статичными значениями?
Если совсем извращенец, то гугли
>sp_executesql dynamic sql
Если кратко, то генеришь запрос текстом в переменную, а потом подаешь ее, как параметр на вход в эту процедуру.

Аноним 04/09/16 Вск 13:38:13  835063
Анон, у меня тут два стула.
Есть довольно сложная структура бд, с кучей связей m-n.
В некоторых местах для проверки прав пользователя и некоторых других вещей делать джойны кучи таблиц (пока в самом сложном месте 6 таблиц джойнится)
Есть вариант денормализовать базу, продублировав некоторые связи в массивы айдишек, хранящиеся в нужном ресурсе (бд постгрес). В теории это не вписывается в концепцию РСУБД, но это существенно упростит написание запросов, и я почти уверен, что так же значительно их ускорит. Какие подводные камни?
Аноним 04/09/16 Вск 13:56:22  835078
>>835063
Денормализация теорией не запрещена.
Смысл тут что-то советовать. Пробуй.
Аноним 04/09/16 Вск 17:33:14  835283
>>835063
Денормализовывать надо только тогда, когда у тебя запросы с джойнами заметно дольше работать начинают. А просто так, потому что лень написать пару строчкк - это не причина.
Подводные камни следующие: придется поддерживать кучу процедур для обновления данных по справочникам, например, была в справочнике контрагентов запись: id: 1, name: "Хуй простой", в нем name поменяли на "Хуй обычный", соответственно, в твоей денормализованной таблице, в которой у тебя не только id, но и name хранится, тоже нужно обновить этот name.
В общем, нужно хорошо все обдумать, прежде чем ступать на этот скользкий путь, а то все время будут запросы поступать от пользователей на тему рассинхронизации данных.
Аноним 04/09/16 Вск 17:41:22  835302
>>835283
В массиве будут храниться только айдишки. Суть такова: есть например таблица files, таблица users, и files_users соответственно. И нужно, чтобы юзер мог видеть и редактировать только файлы, которые на него расшарены. Собственно, такая таблица files_users не одна, а есть различные списки доступа, все сложно в общем. Поэтому я и хочу завести массив айдишек чтобы не джойнить 5-6 таблиц. Обновление массива можно делать через триггеры, или в самом приложении через коллбеки, не суть важно. Причем очевидно связующие таблицы я убирать не буду, т.к. нужны будут выборки и с обратной стороны - но там все просто.
Аноним 04/09/16 Вск 20:54:28  835507
>>835302
А вьюха с индексами медленная, думаешь, будет? Я бы сначала ее попробовал, прежде чем сразу бросаться в крайности.
Аноним 06/09/16 Втр 15:48:27  836571
Анон, помоги.
БД postgresql.
Есть json объект (рассчитывается вне бд) следующего вида: {1: '011010', 2: '110101', 3: '010101'...}, где ключ - число, значение - битовая строка (длина одинаковая). В БД в таблице есть колонка типа "массив целых чисел", например: [1, 3] Нужно произвести следующую операцию: выбрать из jsona все значения, у которых ключ находится в массиве, и произвести битовое сложение всех значений, т.е., в данном примере выбрать из jsona значения по ключам 1, 3 ('011010', '010101') и получить на выходе '011111'.
Аноним 06/09/16 Втр 16:36:09  836592
>>836571
сам спросил, сам ответил, кому интересно:
разбить json на 2 массива
SELECT bit_or(b) FROM UNNEST(ARRAY[1, 2, 3], ARRAY['011010', '110101', '010101']::bit(6)[]) AS t(a, b) WHERE a IN (1, 3);
Аноним 06/09/16 Втр 21:44:31  836789
спец по sqlite в треде. патчил wal-mode, интерраптил checkpoint, пил пиво с Ричардом. спрашиваете свои query.
Аноним 06/09/16 Втр 21:49:42  836794
>>836789
Зачем ты это делал?
Аноним 06/09/16 Втр 21:54:09  836800
>>836794
зачем что делал?
Аноним 08/09/16 Чтв 17:32:15  838229
Как в mysql в таблице pec выбрать все столбцы кроме id?
Аноним 09/09/16 Птн 00:23:20  838645
>>838229
Ты генеришь запрос из какой-нибудь пыхи или сидишь в субд mysql и пишешь запросы оттуда?
Аноним 09/09/16 Птн 05:18:18  838735
>>832723
Хуи сосешь?
Аноним 11/09/16 Вск 20:15:01  840273
14736141014890.jpg (165Кб, 682x1024)
Поделитесь годными видео-гайдами или статьями по MySQL для начинающих, но не для полных аутистов.
Аноним 12/09/16 Пнд 00:13:26  840392
>>840273
а анус тебе не вылизать?
Аноним 12/09/16 Пнд 14:59:55  840632
Сап, програмач.

Передо мной(макакой, не знающей SQL) поставили задачу:
1) Нужно отправить запрос на адрес onlyoffice.eu/api/2.0/authentication с параметрами username и password.
2) Получить в ответе от сервера token.
3) При INSERT'e в таблицу автоматически отправлять свеже-добавленные строки(lastname, firstname, email из таблицы USERS) на https://onlyoffice.eu/api/2.0/people, при этом добавив в Header token из предыдущего запроса.

При этом всё это делается в Oracle.
Погуглив, я понял, что выполнить это можно с помощью UTL_HTTP, но разобраться с ним так и не смог. А третий пункт - это нужно создать триггер, который вызовет метод с отправкой файлов.
Да и вообще интересует, это возможно на SQL'e написать?

Можете помочь написать этот запрос, ну, или направить на истинный путь?
Аноним 12/09/16 Пнд 19:29:21  840778
>>840632
Зачем триггер?
Ты же сразу имеешь строку с введенными пользователем данными(фамилия, имя, etc)
Просто жди успешного добавления в таблицу и храни эту заготовочку в памяти.
Для того, чтобы понять, добавил ты или нет, используй блок TRY CATCH.
Если добавил успешно, то отправляй Свою заготовленную строку, вот и все.
На SQL тебе нужно только написать
TRY
INSERT INTO "yourTable"
(Поля таблицы)
select данные добавляемого юзера
Catch print 'NEUDACHA'

После этого инсерта поверяешь, добавилась ли запись, и отправляешь на сервак данные.
Или я чего-то не понял, или все тривиально.
Аноним 12/09/16 Пнд 21:57:05  840895
Есть в ms-sql возможность реализовать тип enum или что то наподобие ему при условии, что в столбце, для которого может энум, нужно предоставить возможность множественного выбора. например, как в c#
[Flags]
enum Цвета
{Красный=1, Синий=2, Зелёный=4, Фиолетовый=8}
Что для этого нужно сделать?
Пока в голову приходили только тупые нерациональные идеи типа делать таблицу с именем enum'a, в которой указывать в качестве столбцов все возможные значения enum'a и тип столбцов делать bit, а в основной таблице делать внешний ключ на таблицу-enum.

думал просто заменять enum обычным числом - int, и уже в клиентском приложении парсить число и исходя из значения понимать, что в нём было отмечено.
Аноним 13/09/16 Втр 17:17:53  841335
>>840778
Так оно и должно быть, но другой <string>макакач</string> программист не сделал регистрацию. По итогу регистрация на сайте не работает, а пользователей пока добавляют вручную в базе.
Именно поэтому я не могу написать код на шарпе с отправкой файла на сервер. А приходится выдумывать какую-то хуйню с проверкой добавления в Oracl'e и отправкой из Oracl'a на сервер.

Так вот меня интересует, возможно ли написать такую вещь, которая будет улавливать даже ручные добавления в базу?


Аноним 13/09/16 Втр 18:31:34  841374
>>841335
>Так вот меня интересует, возможно ли написать такую вещь, которая будет улавливать даже ручные добавления в базу?
>>841335
>Так вот меня интересует, возможно ли написать такую вещь, которая будет улавливать даже ручные добавления в базу?
>>841335
>Так вот меня интересует, возможно ли написать такую вещь, которая будет улавливать даже ручные добавления в базу?
>
>
Да, триггер называется. Только по триггеру не советую отправлять запись через UTL_HTTP. По триггеру проставляй признак на строку, типа нуждается в отправке, а саму отправку сделай в джобе.

Пример работы с UTL_HTTP http://ideone.com/6ETtKF

Аноним 13/09/16 Втр 19:16:10  841394
>>841374
Двачаю.
Аноним 13/09/16 Втр 22:10:48  841512
Котаны!
Пытаюсь вкатиться в бд. Пощупав mysql и postresql остановился на 2 варианте.
Появились ряд вопросов:
1. В mysql имена таблиц и имена столбцов можно писать в любом регистре и соответственно в запросе не важно в каком регистре писать:
select id, name from users
select Id, Name from Users
При выводе имена столбцов будут в визуально красивом стиле (1 буква заглавная, остальные маленькие)
В postresql же, Users и users это разные имена. Если задавать имена с использованием заглавных букв, то в запросах придётся использовать двойные кавычки (что не очень удобно).
select "Id", "Name" from "Users"
Выключается ли такая регистрозависимость в postresql?
Как принято задавать имена таблиц/столбцов в продакшене (только маленькие/первая заглавная остальные маленькие)?
2. Почему нельзякак изменить тип данных столбца у вновь созданной пустой таблицы?
Аноним 13/09/16 Втр 22:51:36  841528
>>841512
1. Всё в нижнем регистре. Сам постгрес приводит всё в нижный регистр, что незакавычено.
2. https://www.postgresql.org/docs/9.3/static/ddl-alter.html - 5.5.6
Аноним 13/09/16 Втр 23:44:27  841540
>>841528
Ага, спасибо.

В mysql после добавления новой строки (через insert) и последующего вызова select * from users новая запись встаёт в правильную позицию в соответствие со своим id.
А в postresql новая запись или обновлённая (через update) встаёт в самый конец не зависимо от id (если обновить запись с id = 1, то она окажется в конце).
Почему так происходит?
Аноним 14/09/16 Срд 00:03:27  841555
Какой из форков MySql выбрать? Генерик смолл бизнес приложуха.
Аноним 14/09/16 Срд 01:27:51  841580
>>841540
А ты задал pk или clustered index для id?
На самом деле, то, как записи лежат в таблице, совершенно ничего не значит, какая разница, как они там расположены?
Аноним 14/09/16 Срд 07:28:25  841624
>>841540
С точки зрения реляционной теории порядок строк, как и столбцов, не имеет никакого значения. Вставлять в конец быстрее. Нужна сортировка - order by, нужен быстрый поиск - index.
Аноним 14/09/16 Срд 15:36:06  841760
>>735299 (OP)
Могут ли несколько сайтов использовать одну бд и одинаковые строки?
Аноним 14/09/16 Срд 15:37:35  841761
>>841760
Клонировать друг друга*
Аноним 14/09/16 Срд 15:44:05  841763
>>841760
Да, могут.
Аноним 14/09/16 Срд 18:25:04  841861
Есть таблица "department": отделы компании, ее дочерняя – post: должности, а ее дочерняя – "designations": назначения на должность. Необходимо вывести отдел, номер отдела, название должности, число действующих назначений на должности и число действующих назначений в отделе. Делал так:
SELECT tt., COUNT() dep_total FROM (SELECT dep.name as depname, dep.department_id, po.name as poname, COUNT(*) as post_total FROM department dep INNER JOIN post po ON dep.department_id=po.department_id INNER JOIN designations des ON des.post_id=po.post_id AND des.leave_date is NULL GROUP BY dep.department_id, po.post_id ) as tt GROUP BY tt.department_id;
Считает правильно, но из-за группировки по отделу, показывает только одну должность на отдел. Как быть?
Аноним 14/09/16 Срд 19:28:44  841894
>>841861
В подзапосе посчитай количество назначений на должность, а в основном сложи эти назначеия для каждого отдела. - Amount
Для этого во внешнем запросе используй SUM(Amount) OVER (PARTITION BY department_id)
Аноним 14/09/16 Срд 20:20:53  841936
>>841894
Тоже хотел через SUM, но забыл упомянуть, что дело в MySQL, там, я понял, так нельзя. Спасибо
Аноним 14/09/16 Срд 20:34:13  841944
>>841580
>А ты задал pk для id?
Да, для id установлен первичный ключ

>>841580
>>841624
Вот например у меня 10 записей. Пару записей я обновил и они сдвинулись вниз.
И тут я решил добавить новый столбец id с авто увеличением номера, чтобы не думать о номере.
И после присвоения:
update db_name set <old_id>=<new_id>;
Новые индексы будут в разброс.
Можно как-то привести в порядок бд?
Аноним 14/09/16 Срд 22:55:27  842064
>>841944
Ты СОВЕРШЕННО не понимаешь в чем суть реляционных БД...
Аноним 16/09/16 Птн 01:05:58  842730
>>841936

Ясно, если нельзя использовать оконные функции, тогда делай через вложенные запросы:
Посчитай количество Людей в отделе и этот вложенный запрос заджойни к запросу, которым считаешь количество людей на должностях.
Если не понял, напиши названия таблиц и полей, скинем тебе решение.
Аноним 16/09/16 Птн 11:15:21  842810
14740137214440.jpg (44Кб, 499x468)
>>842730
Вот структура, мне подсказали такой вариант, он работает:
"SELECT dep.name as depname, dep.department_id, po.name as poname, COUNT(des.post_id) as post_total, po.salary as rate ,( SELECT count(1) FROM post po1 JOIN designations des1 ON des1.post_id=po1.post_id AND des1.leave_date is NULL WHERE po1.department_id=dep.department_id ) dep_total FROM department dep INNER JOIN post po ON dep.department_id=po.department_id INNER JOIN designations des ON des.post_id=po.post_id AND des.leave_date is NULL WHERE des.leave_date is NULL GROUP BY dep.department_id, po.post_id"
Или как-то еще проще можно?
Аноним 16/09/16 Птн 11:21:02  842811
Как вкатиться в big data? Что-где читать? Насколько востребовано в рашке? Сложно найти работу? Какие ЯП надо знать?
Аноним 16/09/16 Птн 11:35:04  842816
14740149051320.jpg (29Кб, 650x400)
14740149051331.png (45Кб, 181x349)
14740149051342.jpg (46Кб, 657x450)
Пиздос, каким же надо быть дауном-аутистом, чтобы живя в РАШКЕ, полезть во всякую там статистику и датасцаенс.
Угадайте, где вы окажетесь, если хоть немножко продвинетесь в этом.
Аноним 16/09/16 Птн 13:41:30  842864
>>842816
Вне рашки?
Аноним 16/09/16 Птн 17:49:34  842962
>>735299 (OP)
Господа, у меня потенциально тупой вопрос, но просьба не пинать ногами. Есть сайт, допустим, http://tehnosila.ru/
там группу товаров можно фильтровать по дополнительным опциям, выделенным в категории. Например:
http://tehnosila.ru/catalog/kompjutery_i_orgtehnika/monitory_lcd
разрешения, бренд и диагональ.
Нюанс в том что при выборе опций в одной категории их пересчет не происходит. Он происходит только когда мы начинаем добавлять опции с других категорий.

Суть вопроса: как можно было бы примерно сформулировать такую логику в sql, если это вообще возможно? Имею в виду выборку, т.е. where-блок.
Аноним 16/09/16 Птн 18:27:00  842976
>>842962
>их пересчет не происходит
Что ты имеешь ввиду? Там очевидный OR внутри фасета (а это фасет, а не категория). При выборе других фасетов идет AND.
>такую логику в sql, если это вообще возможно? Имею в виду выборку, т.е. where-блок.
WHERE item.brand IN ('DELL', 'LG')
AND item.numberOfDmiPorts IN (2)
AND item.color IN ('black', 'white')

Для таких рода выборок и полнотекстового поиска обычно используется solr или elasticsearch.
Заходим на hh.ru.
Находим Техносилу.
Находим вакансию программиста
https://spb.hh.ru/vacancy/18280663
Видим
>Желательно: Hybris, Junit, ZKoss, Apache SOLR, Spring AOP
>SOLR
Что и требовалось доказать.
Аноним 16/09/16 Птн 19:03:05  842993
>>842976
Спасибо за ответ. Ты прав, в моем случае это эластик и есть готовый запрос. Проблема в том что при аналогичной выборке начинают проседать не выделенные внутри фасета опции, хотя по-идее этого не должно быть.
Аноним 16/09/16 Птн 19:23:11  843003
>>842811
Интуит, курс эра, там проходишь курсы, изи же, изначальный багаж знаний в виде теории бд, sql, olap (+mdx) желательно иметь.
Аноним 16/09/16 Птн 20:58:08  843042
>>841760
Да, я разрешаю.
Аноним 16/09/16 Птн 22:37:59  843116
>>842810
Блять, ты проверял, вообще, свой sql? Он не будет работать элементарно потому, что ты не все поля, к которым не применяешь агрегацию, указал в GROUP BY.

И еще, может быть, я не прав, поправьте, но нет ничего более уебанского, чем выводить в каждой строчке (SELECT ...) как поле.
Это, сука, даже читать невозможно, прибавь сюда еще свою разметку без табуляций и переходов на новую строку, я вот с планшета это читаю, кровью из глаз все лицо залило уже. Если бы я решал твою задачу без возможности использования оконных функций, я бы посчитал отдельно количество сотрудников в каждом отделе и заджойнил этот подзапрос к основному, в котором считалось бы количество сотрудников на должности. Получилось бы что-то типа этого. Пишу с айпада, так что, если где и накосячил в синтаксисе, извиняйте. Поля-атрибуты, типа name и т.п. Я опустил за ненадобностью.
With dep_count as (
Select
Dep.department_id,
Count() as Dep_amount,
From department Dep
Left join Post P ON dep.department_id=P.department_id
Group by Dep.department_id
)
Select
P.post_id,
P.department_id,
count(
) as post_amount,
DC.Dep_amount
From post P
Left join designations Des on P.post_id = Des.post_id
Left join dep_count DC ON P.department_id = DC.department_id
Group by P.post_id, P.department_id, DC.Dep_amount
Аноним 16/09/16 Птн 22:39:12  843118
>>843116
Ну и, ясное дело, в Count(...) у меня стояла звездочка, но макаба ее схавала, как тэг разметки-италик.
Аноним 17/09/16 Суб 00:21:58  843165
>>843116
MyGovnecoSQL не поддерживает CTE.
Аноним 17/09/16 Суб 01:44:50  843205
>>843165
Божемой, ну перепиши запрос так, чтобы джойн напрямую происходил с подзапросом, такое точно поддерживается. Возьми его в скобки и дай ему такой же алиас.
Селект фром table t
Джойн (подзапрос) sq on t.id=sq.t_id.
Ну и калл же этот май скл, зато бесплатный, хотя, если бы я и выбирал что бесплатное, точно бы остановился на постгресе.
Аноним 17/09/16 Суб 16:49:39  843439
Начался новый учебный год, а значит новые лабы - Итак, есть задание - "Вывести города куда продовали тип самых продаваемых книг из БД Pubs" .В таблице titles есть 3 нужных нам столбца - title_id, type и ytd_sales(продажи). В этой таблице мы должны найти самый продаваемый тип книг, путем сложения всех проданных этого типа и сравнения с остальными. Далее найдя самый продаваемый тип нужно из таблицы sales найти все магазины(stor_id) куда отправили самый продаваемый тип книг(title_id). И потом вывести все города(city) из таблицы stores, в которые отправили этот самый продаваемый тип книг.
Всё что у меня на данный момент получилось, это найти самый продаваемый тип книг через: SELECT TOP 1 [TYPE], SUM(ytd_sales) AS sales FROM titles GROUP BY [TYPE]

Да, я тупой и ничего не понимаю в sql, даи не преподавали у нас его. Очень надеюсь на вашу помощь, хотя бы советом, как это реализовать, что гуглить. На книги времени нет.
http://rgho.st/8lZp6KV4Z -БД
Аноним 17/09/16 Суб 21:46:46  843616
>>843439
Ты забыл добавить ORDER BY в SUM(ytd_sales) DESC конце.
Аноним 17/09/16 Суб 21:58:33  843621
14741387136990.png (7Кб, 895x437)
>>843616
Точно, спасибо. Даже не заметил что оно неправильно сортировалось. А не подскажешь как мне из этого(на скрине) результата записать business(только само слово типа CHAR, без sales) во временную переменную? Это бы очень упростило мне оставшуюся часть задания.
Аноним 17/09/16 Суб 22:11:27  843633
14741394875720.png (39Кб, 1386x753)
Вроде сделал, я точно не уверен, мне кажется есть ошибки, но в sql я 2й день. Пожалуйста, зацените, может увидите, как увидел этот анон >>843616

Аноним 17/09/16 Суб 22:28:36  843641
>>843116
>>842810
Тот запрос мне подсказали на stackoverflow, сейчас я написал так:
SELECT tt.depname, tt.department_id, p.post_id, p.name as post_name, p.salary as rate, COUNT() as post_total, tt.dep_total
FROM designations de
INNER JOIN post p
ON de.post_id=p.post_id
LEFT JOIN (SELECT dep.department_id,dep.name as depname, COUNT(
) as dep_total
FROM department dep
INNER JOIN post po
ON dep.department_id=po.department_id
INNER JOIN designations des
ON des.post_id=po.post_id AND des.leave_date is NULL
GROUP BY dep.department_id) as tt
ON tt.department_id=p.department_id
WHERE de.leave_date is NULL
GROUP BY p.department_id, p.post_id;
Спасибо за пинок под зад
Аноним 17/09/16 Суб 22:46:32  843652
>>843641
Будешь молодец, когда в Group by укажешь все поля, над которыми не совершаешь агрегацию, ты почему-то этого упорно не делаешь.
Аноним 17/09/16 Суб 22:56:34  843659
>>843633
Ну так выведи города, как в задании написано, что ты звездочку выводишь?

Еще не уверен насчет использования переменных, переменные - это не Т-Скл, если что, а так, для второго дня неплохо. Еще, когда селектишь больше, чем из одной таблицы, используй алиасы, это, вроде как, best practice.
Ну и, если это домашнее задание, которое будет препод проверять, пиши комменты, вообще, в коде всегда пиши комменты, когда описываешь какую-то логику сбора данных, приучишь себя, будешь молодец большой.
Аноним 18/09/16 Вск 04:09:24  843754
Привет, тредик, хочу вкатиться в базы данных.
1. Расскажи, что сейчас модно для хранения out-of-memory-данных кроме классического B-дерева с LRU и LSMT? Bw-tree - hot or not для не-только-in-memory?
2. Как шардировать данные, чтобы они ещё и нетсплин выдерживали, пусть и со stale read, кроме очевидного хэширования по ключу с репликами бакетов в каждой сети?
3. Атомарные коммиты в распределенной системе -- что есть кроме 2PC?
Аноним 23/09/16 Птн 10:08:56  846541
Как в t-sql (или ms-sql, если t-sql и ms-sql не одно и то же) заименовать столбец (типа select tableName.ColumnName as 'АЙЙЙЛМАО' from...) с помощью переменной не прибегая к динамическому запросу? В частности, как в зависимости от значения столбца в соединяемой таблице выбрать псевдоним для столбца? Пробовал что то типа
..., tableA.columnName as choose(case tableB.tagAttribute=0 then 1 else 2, 'incase 1', 'incase 2'),...
но нйет, IDE выдает ошибку мол пшел нах ожидаю select, (, ID или ещё чё то там.

И ещё вопрос, насколько плохо использовать динамические запросы типа
@selectVar varchar(200)=''
select @selectvar+='...'
exec sp_executeSQL @selectVar
Аноним 23/09/16 Птн 12:53:59  846604
14746244401220.png (52Кб, 1041x755)
>>846541
1. Без динамик скл - никак.
2. Если можно обойтись без них, то лучше не использовать. Разбирать потом это сам заебешься, так еще и кто-то другой будет читать.
Сам такое ковыряю. Пикрелейтед отлично описывает твой вопрос, думаю. Даже все на экран не поместилось. Но в этом случае, конечно, решение принято правильное. Так что тут уже от ситуации зависит. Можно написать 2 строки на динамик скл, а можно 1000 на обычном. Я бы выбрал первое.
Аноним 23/09/16 Птн 13:23:38  846616
>>846604
Пасиба.
Аноним 23/09/16 Птн 16:42:46  846731
>>846604
А нафиг оно надо? Один результат можно поместить в один столбец, другой результат в другой (ав первый null) и всё.
В дальнейших представлениях можно применить тернарный оператор для выбора столбца
Аноним 27/09/16 Втр 18:13:29  847832
С помощью запроса получаю данную таблицу. Чтобы вывести тип смаксимальным кол-во продаж - TOP 1 Что делать если будет два типа с одинаковыми продажами(например у типа mod_cook было бы столько же продаж, сколько и у business) Как вывести только эти 2 элемента?
Аноним 27/09/16 Втр 18:16:27  847833
14749893872960.png (9Кб, 801x364)
>>847832
Скрин забыл
Аноним 28/09/16 Срд 09:35:03  847972
>>847832
having max(sum(ytd_sales)) = ..., не?
Аноним 29/09/16 Чтв 04:21:10  848260
Очень ньюфаг
В примерах, в команде CREATE TABLE, видел иногда ставится знак ;
Не могу вдуплить, когда его нужно ставить, объясните плес
Аноним 30/09/16 Птн 22:09:44  848720
>>847833
Пронумеруй результат запроса, взяв группировку по типу и отсортировав по сумме по убыванию и выбери только те записи (назови TYPE_ROW_NUM), у которых этот TYPE_ROW_NUM = 1
Получится 2 вложенных запроса, но работать будет быстро, потому что все вычисления ты будешь проводить только в самом первом:
SELECT FROM (
SELECT
ROW_NUMBER () OVER (PARTITION BY Type ORDER BY Total_sales DESC) AS TYPE_ROW_NUM,

FROM (
SELECT
Type,
SUM(ytd_sales) as Total_sales
FROM titles
GROUP BY
Type
) all_sales
) ranked_sales rs
WHERE rs.TYPE_ROW_NUM = 1
Аноним 30/09/16 Птн 22:10:24  848721
звездочки, как всегда, проебались.
Аноним 30/09/16 Птн 22:12:25  848723
14752627460420.jpg (274Кб, 1343x1014)
>>848721
>>848720
Аноним 30/09/16 Птн 22:14:24  848724
>>848260
Ставится на логическом завершении команды.
В местах, где кончается твой запрос, например, и начинается новый. Но ты можешь не ставить, ско-сервер за тебя разберется. Просто есть такие субд, которые сами не могут, надо им тогда явно указать.
Аноним 15/10/16 Суб 15:08:34  857017
Какой даун додумался произносить SQL как "сиквэл"?
Аноним 15/10/16 Суб 15:35:39  857036
>>857017
вики объясняет этот факт
Аноним 15/10/16 Суб 21:10:23  857207
>>857017
Звучит же круто, сиквел, кяк.
Аноним 16/10/16 Вск 01:57:29  857384
14765722496680.png (47Кб, 910x785)
14765722496691.png (32Кб, 617x680)
14765722496692.png (33Кб, 548x782)
Мускуланы, выручайте!
Прохожу курс по основам, очередное задание такое:
Напишите запрос, который выводит все неповторяющиеся в таблице purchase коды продавцов salesperson из таблицы purchase_archive.

Связей между таблицами нет.
salesperson- одноименный столбец в обеих таблицах, причём в purchase столько- то строк, а в purchase_archive на 2 уникальных записи больше. Надо вывести столбец salesperson той таблицы, в которой есть уникальные строки, которых нет в другой таблице, т.е. на выходе должно быть

salesperson
ZZ
JT

Наставник, обещавший отвечать на мои ебанутые вопросы, пинает хуи. Если ты здесь сидишь, знай, что я тебя уничтожу.
Аноним 16/10/16 Вск 02:02:55  857385
14765725753260.png (26Кб, 627x715)
>>857384
забыл
Аноним 16/10/16 Вск 15:13:24  857641
>>857385
+ WHERE purshase.salesperson IS NULL
Аноним 16/10/16 Вск 17:52:55  857756
>>857641
:)
большое спасибо!
Аноним 18/10/16 Втр 01:09:40  858757
>>857384
Можно еще через except решить задачку:
SELECT
salesperson
FROM purchase_archive
EXCEPT
SELECT
salesperson
FROM purchase

Аноним 19/10/16 Срд 10:57:55  859532
>>858757
просто как возможный вариант, но это дерьмовый ход и об этом стоит помнить

[Назад][Обновить тред][Вверх][Каталог] [Реквест разбана] [Подписаться на тред] [ ] 515 | 35 | 209
Назад Вверх Каталог Обновить

Топ тредов
Избранное