@MongoDBRussian

Страница 78 из 342
Alex
06.04.2017
09:47:28
да это понятно

yopp
06.04.2017
09:47:32
ну и в случае если указатель на странице которая не в памяти, сходить на диск

Alex
06.04.2017
09:47:50
можно закопаться и опять что при неселективном индексе это чем то будет напоминать Seq scan в RDBMS

на чтение

Google
Alex
06.04.2017
09:48:06
не проверял но скорее всего так и будет

yopp
06.04.2017
09:48:13
почему чем-то? именно он и будет. seq scan по индексу

быстрее чем по документам, на порядок. но если нам надо чтоб 1 документ достать проехаться по 1кк ключей индекса — это пипец плохо

Alex
06.04.2017
09:48:53
потому что не хочется делать голословных утверждений :) не сильно знаю как в монге это реализовано

yopp
06.04.2017
09:49:10
в mmap всё иначе, а в wt там всё таблица wt

и данные (ключ _id, значение bson блоб)

Alex
06.04.2017
09:49:43
ясно

yopp
06.04.2017
09:49:45
и индексы (ключ — ключ, значение — указатель на документы)

Serhio
10.04.2017
10:38:24
Подскажите, может кто вкурсе: у монги закончилось место и демон сдох. Датасет прочекали с —repair, все завершилось как надою. После этого осталось 2 коллекции побитых, на запросах к ним монга выругивается таким вот образом: [conn190] WiredTiger error (0) [1491784952:284589][1:0x7ff4c70ae700], file:collection-653-9180463724287886924.wt, WT_CURSOR.search: read checksum error for 16384B block at offset 12676222976: block header checksum of 3612947089 doesn't match expected checksum of 321045208 дальше рестарт и до нового обращения к данной коллекции. Интересует собственно есть ли возможность без даунтайма починить, например удалением коллекции?

yopp
10.04.2017
10:39:27
если данные в коллекции не нужны, то да, просто удаляешь

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

Serhio
10.04.2017
10:40:53
да этот способ известен, копипаста делается только с выключеной базой?

yopp
10.04.2017
10:41:58
fsync command with the lock option can ensure that the data files do not change for MongoDB instances using either the MMAPv1 or the WiredTiger storage engines, thus providing consistency for the purposes of creating backups

Google
yopp
10.04.2017
10:42:05
3.2+

Serhio
10.04.2017
10:48:04
Ага, благодарю, логично же) но сервис придется остановить который юзает коллекцию

yopp
10.04.2017
10:48:47
вообще если в коллекцию никто не пишет, можешь скопировать на ходу

она у тебя и так уже битая

а любая операция на чтение с ошибкой падает?

или только конкретная?

я бы ещё праймари индекс снял

в смысле .wt который _id держит

Serhio
10.04.2017
10:50:01
Часть данных читается падает по одинаковому оффсету

yopp
10.04.2017
10:50:04
по крайней мере можно будет получить список айдишников документов и попробовать по одному вытащить

а большая коллекция?

Serhio
10.04.2017
10:50:54
При обращении к определённому месту. Коллекция на 16 гиг да она не нужна в принципе

yopp
10.04.2017
10:51:27
если не нужна, то дешевле дропнуть

Serhio
10.04.2017
10:54:09
Была ссылка на статью, могу позже поискать, там кроме wt файлов для расковыривания сырых данных копипастили еще и другие, вопрос на будущее хватит одного wt файла или остальные относящиеся к движку тоже тащить

yopp
10.04.2017
10:55:22
поищи. но структура в .wt очень простая

у тебя есть .wt для bson и .wt для индексов. т.е. минимально всегда два хранилища: data & _id

исходя из того что _id тоже часть bson, просто .wt с данными хватит

но учитывая что wt это CoW, там есть ряд НЮАНСОВ

Serhio
10.04.2017
10:57:14
-rw-r--r-- 1 root root 4738772992 Feb 9 14:06 collection-2657--1723320556100349955.wt -rw-r--r-- 1 root root 1155072 Feb 9 14:05 _mdb_catalog.wt -rw-r--r-- 1 root root 26935296 Feb 9 14:05 sizeStorer.wt -rw-r--r-- 1 root root 95 Feb 9 14:05 storage.bson -rw-r--r-- 1 root root 46 Feb 9 14:04 WiredTiger -rw-r--r-- 1 root root 495 Feb 9 14:04 WiredTiger.basecfg -rw-r--r-- 1 root root 21 Feb 9 14:04 WiredTiger.lock -rw-r--r-- 1 root root 916 Feb 9 14:04 WiredTiger.turtle -rw-r--r-- 1 root root 10436608 Feb 9 14:04 WiredTiger.wt

Вот список из статьи

Google
yopp
10.04.2017
10:57:37
а что за статья?

Serhio
10.04.2017
10:57:42
Сек

yopp
10.04.2017
10:57:58
sizeStorer.wt ммм

Serhio
10.04.2017
10:57:59
http://www.alexbevi.com/blog/2016/02/10/recovering-a-wiredtiger-collection-from-a-corrupt-mongodb-installation/

yopp
10.04.2017
10:59:34
а

ну тут не сырое ковыряние :)

Serhio
10.04.2017
11:00:07
Ага тогда понял

yopp
10.04.2017
11:02:12
но идея интересная!

Вобщем-то оно скорее всего использует последнюю корректную сессию, для того чтоб восстановить Point-in-time структуру, которая корректна

что на самом деле очень хороший способ вытащить хоть что-то

Serhio
10.04.2017
11:06:56
Понятно, спасибо) у нас не критично там сыгранные партии в пасьянс хранятся

yopp
10.04.2017
11:07:26
последнее корректно нужно читать как консистента

А, да. Пока у меня острый пиздец не прошел, можно с пользой провести время: если кто-то готов побыть, гхм, /альфатестером/ (так-же круто как быть альфа-самцом!) штуки для мониторинга которую я начал клепать, напишите мне в личечку. Скажите какая у вас топология, сколько данных и сколько коллекций.

Я очень плохо скейлюсь, настало время себя автоматизировать!

Dmitry
10.04.2017
12:54:54
господа, я тут наконец-то захотел заменить монго objectid на uuid но столкнулся с такой проблемой что не ищет чет по uuid в базе

создал поле с id: String

туда вставляю uuid.v4()

Dmitry
10.04.2017
12:57:37
хотя вру

Google
Dmitry
10.04.2017
12:57:40
в консоли находит

как лучше организовать id у документов по uuid?

сделать вместо _id?

или отдельно иметь id?

понял почему была проблема у меня. Юзал метод mongoose FindById который ищет по ObjectId. сменил на FindOne итд

yopp
10.04.2017
13:03:51
Это не отменяет вопроса зачем uuid вместо objectid

uuid.v4 ничем не лучше чем objectid

Dmitry
10.04.2017
13:04:44
почему не лучше?

в общем тут говорили что не секурно иметь дефолтовый монго id

yopp
10.04.2017
13:06:46
я не знаю кто тут это говорил, но это звучит как бред

и что значит «не секурно»

о какой модели угроз мы говорим?

Alex
10.04.2017
13:11:24
я думаю про какой нить enumeration attack

или как там это правильно называется

yopp
10.04.2017
13:13:38
перебор айдишников?

Alex
10.04.2017
13:13:59
имхо, скорее всего да

так как другие угрозы тут сложно увидеть

yopp
10.04.2017
13:14:45
надо обладать исключительными умственными способностями чтоб использовать oid как какой-то секретный ключ

впрочем как и uuid :)

потому что дешевле просто сгенерировать случайный чанк из 256 бит и конвернуть его в base62 или bas64_urlsafe.

Google
Dmitry
10.04.2017
13:18:03
задача у меня простая

пилю REST API

нужны idшники

Alex
10.04.2017
13:18:16
я думаю скорее тут проблема в том что люди вместо того чтобы проверять наличие прав на доступ к какому то объекту хотят это решить случайными значениями.

что как бы лол

Dmitry
10.04.2017
13:18:56
пришел как-то я сюда

и мне сказали objectid хуета

юзай uuid

и привели детали, но я их подзабыл

вот теперь пришло время мигрировать

поэтому и думаю

Alex
10.04.2017
13:19:55
я думаю права проверять всё же корректней.

Dmitry
10.04.2017
13:20:02
права на что?

Alex
10.04.2017
13:20:11
на доступ по ID

через API

Dmitry
10.04.2017
13:21:03
все API у меня с авторизацией и без нее запросы не пройдут

Страница 78 из 342