@mysql_ru

Страница 36 из 142
Dmitriy
03.07.2017
07:38:37
Можно долго читать один, просто память освобождать

Arslanali
03.07.2017
07:51:04
Как разбить? Какие библиотеки использовать?

Fike
03.07.2017
08:27:11
при чем здесь мускул?

и что сложного сходить в гугл и узнать про sax парсеры?

Google
Arslanali
03.07.2017
08:30:20
Ничего сложно конечно же нет. советуюсь тут так как тут есть профи которые могу подсказать как сделать это лучше. Ведь я парсить собрался не 20 мегабат а 20 гиг.

Alex
03.07.2017
08:31:35
sax парсер онли

и лучше не на пхп как показала практика )

Fike
03.07.2017
08:32:30
ох, ну давай подкатим к местным, назвав их профи

какая разница пхп не пхп?

Alex
03.07.2017
08:33:25
уж не вспомню

Arslanali
03.07.2017
08:33:32
sax парсер онли
А на чем, не подскажите?

Fike
03.07.2017
08:33:48
уж не вспомню
блестяще

Alex
03.07.2017
08:34:32
блестяще
Ну я последний раз пхп брал в руки лет много назад, и тогда там как-то там было со всем этим грустно, проект был на пхп но оказалось прощее и быстрее написать парсер на python

Видимо осталось от пхп такое послевкусие :)

Alexander
03.07.2017
08:35:32
https://github.com/prewk/xml-string-streamer

Arslanali
03.07.2017
08:35:56
https://github.com/prewk/xml-string-streamer
Спасибо, посмотрю

Alex
03.07.2017
08:36:35
если я не ошибаюсь оно тогда пыталось файл сначала целиком в память загрузить а потом распарсить.

Google
Alex
03.07.2017
08:36:41
что-то из этой оперы

Arslanali
03.07.2017
08:37:12
20 гиг в память не получится думаю

Разбить как-то надо этот файл

Alexander
03.07.2017
08:37:44
просто не надо его грузить в память. ключевое слово - XMLReader()

Alex
03.07.2017
08:38:02
Ога

Alex
03.07.2017
08:39:27
я знаю чем отличается SAX парсер от какого нибудь SimpleXML

но разница была на тот момент значительна

нюансов не могу сказать не помню.

и да я сравнивал именно SAX парсеры

Fike
03.07.2017
08:40:21
значительна, но не известна

ох, ладно

Nurik
03.07.2017
09:28:09
Привет. Ребята. Как парсить xml файл размером 20 гиг и больше средствами php?
Тоже писал похожий парсер. Если задача не разовая, то придётся ещё о многом позаботиться. Если файл большой, то нужно ещё учитывать целостность, учитывать, что работа парсера может прерываться. А еще нужно учитывать, что bottleneck может быть в I/O. Ну и конечно логировать все, с оповещением по почте. Если таких файлов много, то нужно еще сервер очередей прикрычивать чтобы в многопроцессном режиме работать. + демонизация через systemv или supervisor

Arslanali
03.07.2017
09:48:18
Maksim
03.07.2017
14:55:45
Привет, я тут с глупыми вопросами к вам Пытаюсь исправить бд, прикрутил миграции и тут понеслась куча ошибок sqlalchemy.exc.IntegrityError: (pymysql.err.IntegrityError) (1215, 'Cannot add foreign key constraint') [SQL: 'ALTER TABLE abbrev_food_group ADD FOREIGN KEY(ndb) REFERENCES abbrev (ndb)'] https://pastebin.com/T8BBeAAu Почему не может добавить?

Fike
03.07.2017
15:14:32
по номеру ошибки (1215), как правило, довольно легко отыскать ответ https://stackoverflow.com/a/16969116/2908793

Maksim
03.07.2017
15:35:41
Верно, тип данных не совпадал, привел к единому, но ошибка осталась

lost
03.07.2017
16:00:50
я подозреваю, что типы не совпадают. но вообще детали можно посмотреть в SHOW ENGINE INNODB STATUS в секции "latest foreign key error"
там будет только нарушение констрейна, фейл по созданию ключа туда не попадет

Google
lost
03.07.2017
16:04:42
Верно, тип данных не совпадал, привел к единому, но ошибка осталась
а это значит, что скорее всего данные неконсистентны, и ты пытаешься повесить ключ на таблицу в которой есть значения, которых нет в родительской

lost
03.07.2017
16:06:11
надо тоже затестить будет... толку мало конечно от этого в выводе движка, ну да ладно

Alexey
03.07.2017
16:06:16
вот прямо запейстил тот пример со stackoverflow и: Cannot resolve table name close to: (`Case_Number` ) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `fk_Clients_has_Staff_Staff1` FOREIGN KEY (`Staff_Emp_ID` ) REFERENCES `Alternative_Pathways`.`Staff` (`Emp_ID` ) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB

lost
03.07.2017
16:07:21
Лоол, они там даже ссылочку на офф. доку подсовывают, мол смотри сюда :)

Ринат
04.07.2017
08:25:05
INSERT INTO user_agent (device_type, robot_name, is_robot, uid) VALUES (1, 'AppEngine-Google', 1, 'cf26cf29aed18e842f8a3b3064f9e402') ON DUPLICATE KEY UPDATE uid=VALUES(uid);

не понял юмора, пробую выполнить два раза-оба раза вставляет, вместо того чтобы во второй раз обновить

Alexander
04.07.2017
08:30:16
индекса нету уникального поди

Dmitriy
04.07.2017
08:30:28
или prymary

Ринат
04.07.2017
08:31:15
оуу

логично что база на основе него разруливает, да косяк

unique проставлю

да работает

а что придумать чтобы автоинкремент не увеличивался из за попытки вставки

Dmitriy
04.07.2017
08:58:45
а нужно ли поле с автоинкрементом, если уже есть уникальное поле?

Ринат
04.07.2017
09:00:22
тоже вопрос

тогда нужно будет в другой таблицы через uid связывать и там вставлять uid вместо id

а строка длиной в 32 символа в виде uid-не круто же наверное?

Alexey
04.07.2017
09:07:47
а строка длиной в 32 символа в виде uid-не круто же наверное?
да. там на самом деле нужно 16 байт, и тогда размер индекса примерно в два раза сократится

можно использовать HEX()/UNHEX(), вот тут пишут с примерами: http://mysqlserverteam.com/storing-uuid-values-in-mysql-tables/

Google
Alexey
04.07.2017
09:09:14
а в 8.0 появились UUID_TO_BIN() и BIN_TO_UUID()

тоже вопрос
кстати, если ты уберёшь AUTO_INCREMENT и сделаешь uid первичным ключом, то вторичные индексы (если есть) распухнут. потому что используют первичный ключ в качестве указателя на данные. а значит сокращение длины до 16 байт станет ещё актуальнее

Ринат
04.07.2017
09:18:22
я решил от строки брать crc32

и тем самым сделать поле id где будет хранится уникальный результат от crc32

Alexey
04.07.2017
09:20:12
у меня mariadb
а зачем, если не секрет?

Ринат
04.07.2017
09:20:42
ну вроде как "стабильнее" mysql

нет?

Но каких то различий в запросах и т.д я пока не видел

Alexey
04.07.2017
09:22:54
я бы так сказал: никаких цифр, которые бы подтверждали стабильность mariadb, я не видел. всегда с подозрением отношусь в вещам, которые нельзя ни подтвердить, ни опровергнуть

а в функциональном смысле mariadb уже явно не выдерживает конкуренции с ораклом. увы

Alexey
04.07.2017
09:28:08
ну вот такое сравнение, ага. я немного знаю, о чём говорю

Muzaffar
04.07.2017
09:28:42
да вижу

че получается мариядб почти что мускул?

Artem
04.07.2017
09:29:48
да вижу
да точно знает

Muzaffar
04.07.2017
09:29:52
не знал

Alexey
04.07.2017
09:32:08
че получается мариядб почти что мускул?
код mariadb — это был на 100% mysql изначально. дальше они начали разъезжаться, но "на глазок" там и сейчас процентов 70-80 кода от mysql

Muzaffar
04.07.2017
09:32:48
ясно

Google
Ринат
04.07.2017
09:52:53
З а ч е м
Кончатся, бигинт?

lost
04.07.2017
09:53:37
это что такое надо хранить, чтобы unsigned bigint закончился очень быстро

Ринат
04.07.2017
09:58:21
Идёт лог

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

Инсерт он апдейт увеличивает автоинкремент

Бигинт то норм, я про ини

Alexey
04.07.2017
10:02:42
autoincrement значение — это ссылка на значение справочника?

Ринат
04.07.2017
10:10:00
есть справочник

в таблице лога есть внешний ключ на него

при каждой новой записи в логе-нужно либо вставить уникальное значение в справочник, либо обновить

Alexey
04.07.2017
10:14:19
тогда не понимаю, в чём проблема с on duplicate key update. если оно делает обновление, то autoincrement в строчке не изменится. следующая вставка пойдёт с увеличенным autoincrement (то есть будет разрыв), но это ни на что не влияет?

Страница 36 из 142