
Dan
04.03.2017
21:34:56
тут мало чего хорошего вообще в телеграме

Jade
05.03.2017
01:35:55

Andrey
05.03.2017
03:45:59

Denis
05.03.2017
07:14:40

Google

Denis
05.03.2017
07:15:08

Dan
05.03.2017
20:07:44
среди нас есть гуру pgsql? а то в чате pgsql тишина, и меня игнорируют, а я хочу разобраться с нубским вопросом

Daniel
05.03.2017
20:08:16
ты задавай


Dan
05.03.2017
20:08:52
В одну простую табличку раз в 20 секунд у меня заходят данные. По старой привычке я добавил поле id (int4) и сделал его primary key. Тем не менее, этот id объективно не нужен, так как таблица ни с чем более не связана, редактирование и удаление записей не предусмотрено, а при добавлении идёт проверка на уникальность поля hash, где char(64).
Правильно ли я понимаю, что:
1. id мне не нужен в данном случае вообще?
2. hash может и должен быть primary
3. hash должен индексироваться для лучшего (более быстрого) поиска
4. будет ли в данном случае регресс и ощутимый проигрышь в скорости работы?
скорость "роста" этой таблицы aprx. 100 тысяч записей в день
хэш это sha256 от конкатенации 4 элементов записи из разных полей для уникальности
а uuid там не подойдёт? :)
я не совсем в курсе подойдёт или нет: мне нужно при инсерте проверять, есть ли уже такая запись в таблице. on conflict do nothing соответственно
беглый гуглинг показал что хранение и сравнение в pgsql встроено в базовый функционал, но генерация всё равно на стороне. а раз так, то на мой взгляд (вполне возможно ошибочный) мне достаточно конкатенировать строки и вычислять хэш до инсерта, чтобы проверять уникальность записи


Daniel
05.03.2017
20:12:09
так а в чем вопрос-то?

Dan
05.03.2017
20:12:30
Правильно ли я понимаю, что:
1. id мне не нужен в данном случае вообще?
2. hash может и должен быть primary
3. hash должен индексироваться для лучшего (более быстрого) поиска
4. будет ли в данном случае регресс и ощутимый проигрышь в скорости работы?

Daniel
05.03.2017
20:13:22
1. не нужен
2. выглядит так, что да
3. unique предполагает индекс, так что выбора нет
4. при указанной нагрузке - нет

Dan
05.03.2017
20:13:50
отлично, огромное спасибо за ответ.

Google

Daniel
05.03.2017
20:14:28
я бы советовал считать хеш md5
эта функция считается плохой, но, на самом деле, для реальных данных я не видел на ней коллизий

Dan
05.03.2017
20:15:02
а, ну и второй вопрос как следствие: мне рассказали про uuid. но в чём выигрышь использования uuid перед обычным хэшем? кроме того, что в pgsql встроены функции сравнения uuid? я вполне обхожусь INSERT INTO и магической ON CONFLICT ... DO NOTHING

Daniel
05.03.2017
20:15:26
а md5 - это 16 байт, а 16 байт - это uuid
у меня есть проект, где я считаю md5, а потом делаю вид, что это uuid
очень кошерно выходит

Dan
05.03.2017
20:16:13
в условиях замкнутого использования данной таблицы более чем, благодарю за рекомендацию!

Daniel
05.03.2017
20:17:16
на постгресе uuid сам по себе не даст ничего - в нем есть для уникальных индексов есть sequence
я ушел спать

Dan
05.03.2017
20:20:03
спасибо еще раз, снов! ?

Daniel
05.03.2017
20:21:52
а, вот еще забыл
есть отличные хеш-функции crc32 и crc64
на своих данных я тоже не видал на них коллизий, но тут вероятнисть, конечно, повыше

Vladimir
05.03.2017
20:24:05
Я встречал на реальных случайных данных коллизии контрольных сумм. Там, правда, был Adler32

Dan
05.03.2017
20:27:14
Я не думаю что в моем случае одна потенциальная коллизия сломает статистику

Goletsa
05.03.2017
20:48:52

Phil
05.03.2017
20:52:59

Dan
05.03.2017
21:01:46
в моей ситуации ранд не спас бы

Phil
05.03.2017
21:02:33
Я честно потерял нить "твоей" ситуации. Я про uuid

Dan
05.03.2017
21:03:22
uuid кстати можно плагином генерировать на стороне pgsql

Google

Dan
05.03.2017
21:04:56
"моя" ситуация очень проста. есть лист из N элементов. я такие листы раз в 20 секунд пишу в базу. в таблице, чтобы не возникало лишних дубликатов - мне нужно смотреть, была ли уже такая запись или нет.

Phil
05.03.2017
21:05:24
да честно не понятно зачем. более того, если тебе именно uuid по спеке не нужен, то это простой ранд

Dan
05.03.2017
21:05:35
я считаю хэш из некоторых элементов, и вношу результат в таблицу в отдельный столбец. который и является unique, ключом и индексом
я просто про uuid не особо знал. я в pgsql не сильно осведомлён

Phil
05.03.2017
21:06:19
а. ну да, тогда я не в кассу. вы там всё правильно пгооворили

Dan
05.03.2017
21:07:17
меня только терзают сомнения относительно md5, так его везде ругают ужасно, прямо зашквар какой-то его использовать. но с другой стороны, у меня система замкнутая, а хэш исключительно для проверки уникальности...

Phil
05.03.2017
21:17:56
Нил всё верно сказал
Я вот тут сделал oauth токены, которые base64 от рандома на 20 байт, да ещё и словарь каждые 16 запросов тасуется по рандому
Думаю упростить, потому что это ваще

Roman
06.03.2017
01:34:21

Daniel
06.03.2017
02:31:46
Че вдруг-то?
Ты еще crc32 закопай

Vartan
06.03.2017
04:08:25
md5 надо закопать и забыть
Если тебе нужен некриптографический удобный хэш, реализованный на миллиарде платформ, md5 вполне подходит.

Roman
06.03.2017
05:07:31

Phil
06.03.2017
06:23:48
Кстати, а что быстрее - взять 16 рандомов или сосчитать md5 от чего-нибудь небольшого?

Vartan
06.03.2017
06:32:45
Что значит "взять 16 рандомов"?
вызвать random() 16 раз?

Phil
06.03.2017
06:42:20
честно не смотрел внутрь функций. я так понимаю они все читают так или иначе из /dev/[u]random. в Go например он вообще просто тебе массив может заполнить

Vartan
06.03.2017
06:43:26
В /dev/random оно смотрит только для seed'а. Дальше оно пользуется prng из стандартной библиотеки. Иначе бы энтропия очень быстро кончилась.

Phil
06.03.2017
06:46:12
короче заполнить 16 байт через rand() (в зависимости от того, как он там реализован) или md5 сделать?

Google

Vartan
06.03.2017
06:47:58
Я не очень понимаю, что тебе нужно. Хэш или 16 случайных байт?

Denis
06.03.2017
06:51:22

Phil
06.03.2017
06:53:40
мне нужен уникальный идентификатор

Denis
06.03.2017
06:56:52

Phil
06.03.2017
06:57:04
блять
не еби мозг. мне интересно, что быстрее. зачем - просто забудь

Jade
06.03.2017
07:01:39

Белая Стрекоза
06.03.2017
07:27:38

Alexey
06.03.2017
07:36:19
Ну вместо данных костыли всё же быть не могут ?

Admin
ERROR: S client not available

Vartan
06.03.2017
07:59:31
Wartans-MacBook-Air:~ wart$ python ./try.py
0.00918388366699
0.00977396965027
Wartans-MacBook-Air:~ wart$ cat ./try.py
import timeit
print (timeit.timeit("""
import md5
m = md5.new()
m.update("Kulin zanuda")
m.digest()""", number = 1))
print (timeit.timeit("""
import random
random.seed()
for i in range(15):
random.random()""",number=1))

Phil
06.03.2017
08:14:29
белый шум, ок

Alex
06.03.2017
08:21:44
Трай пай
Трай пай тудэй
Невер трай пай эт хоум

Vartan
06.03.2017
08:30:23
Трюки выполнены профессионалами, бгг

Andrey
06.03.2017
08:30:53
трай пай, дай ианг!

Roman
06.03.2017
08:31:01

Andrey
06.03.2017
08:31:10
это уже чистяков сказал

Roman
06.03.2017
14:36:54
https://www.blackhat.com/eu-16/speakers/Elena-Reshetova.html

Google

Roman
06.03.2017
14:50:19
https://stosb.com/blog/explaining-my-configs-nftables/

Белая Стрекоза
06.03.2017
20:10:04
http://wstaw.org/m/2017/03/03/Screenshot_20170303_121849.png
хвастался уже?

Gregory
06.03.2017
20:33:22

Uncel
06.03.2017
20:36:04
z13 нет?

Dan
06.03.2017
20:40:23
люди, Крис Касперски погиб

Phil
06.03.2017
20:41:26
Это кто?

Karter
06.03.2017
20:41:36
Оу. Пруф?

Dan
06.03.2017
20:41:40
лучший хакер
в хорошем смысле слова хакер
Погиб чертовски талантливый хакер, которого все знали как Крис Касперски, он же Мыщъх.
http://rsdn.org/forum/life/6717583.1
http://www.news-journalonline.com/news/20170213/sky-diver-injured-in-deland-remains-hospitalized

Karter
06.03.2017
20:43:39
В русском сегменте пока тишина.

Dan
06.03.2017
20:44:29
да, но инфа уже расходится. блин, это обидная потеря

Karter
06.03.2017
20:44:40
Да. (

Vladimir
06.03.2017
20:53:38
Да ладно? Он никогда не был скайдайвером, он стрелять любил

Karter
06.03.2017
20:59:32
Хз, его ли это канал...

Vladimir
06.03.2017
21:00:22
Во-во. Фоточка вроде его...
Может, это очередной способ исчезнуть...

Karter
06.03.2017
21:00:51
Ну, на видео, вроде тоже похож.

Vladimir
06.03.2017
21:01:43
У нас завтра наверняка обсуждать будут, посмотрим...