@botoid

Страница 725 из 4042
Vadim
18.04.2017
08:49:25
естественно если мы не говорим о 5$ сервере на DO

abc
18.04.2017
08:49:51
Меня удивляют люди. Запускают хелловород и сразу ждут 1 Тб данных и хайлоад

Dmitry
18.04.2017
08:50:30
как быстро система индексирует данные?

вот эти 100 гигов?

Google
abc
18.04.2017
08:50:57
ну слушай я не помню цифр но проблем у нас нет вроде

Dmitry
18.04.2017
08:51:01
сегодня начнет заливать данные , что дальше будет?

abc
18.04.2017
08:51:24
в соседнем банке MSSQL с базой в 280 Гб тоже живет ок

Dmitry
18.04.2017
08:51:26
Если база статичная, то что тут говорить

если банк, то там очередь есть к базе

всех никогда не пускали

abc
18.04.2017
08:52:22
там сервер приложений перед БД и у него пулл коннектов. очереди нет т.к. транзакции

Dmitry
18.04.2017
08:52:46
я вот бывший работник сбера

могу рассказать что такое капитализация и как она проходит ночью, и что там с базой

что такое в реале минимум 10 000 клиентов, эти клиенты тетки в отделениях

abc
18.04.2017
08:53:52
ну я рад за тебя. лет 15 назад я работал с 1С и там перепроведение документо занимало всю ночь) но это скорее говно арх-ра чем проблемы БД

Vadim
18.04.2017
08:54:07
у меня есть в перконе база на > 300гб, и все работет баз проблем, находится под активнмы чтением/записью. на не самом мощном сервере (правда с ssd)

Dmitry
18.04.2017
08:54:34
объем это один момент, важнее тут кол-во клиентов

Google
Dmitry
18.04.2017
08:54:42
один пишет, другой читает

Vadim
18.04.2017
08:54:54
естественно, если гонять запросы по миллиардам строк которые индексами не покрыты то будут проблемы

но тут не в базе дело тогда)

abc
18.04.2017
08:55:03
И потом если ты топишь за MongoDB то почему она ? Есть аналогичная CouchDB, Couchbase, Aerospike, etc

Dmitry
18.04.2017
08:55:29
ну и есть Redis

вот в чем отличие Redis vs Mongo?

abc
18.04.2017
08:55:58
один пишет, другой читает
дак это решаемая проблема. на уровне арх-ры системы и уровнем изоляции транзакций. и да read-commited не всегда подходит

Dmitry
18.04.2017
08:56:18
в момент записи идет блокировка

abc
18.04.2017
08:56:24
вот в чем отличие Redis vs Mongo?
ты тут тесты устраиваешь ? K/V хранилище с БД сравниваешь ?

Dmitry
18.04.2017
08:56:38
так монго же K/V

abc
18.04.2017
08:57:03
монго это документо-ориентированная БД. хранит JSON в виде BSON.

Dmitry
18.04.2017
08:57:12
аллилуя

так что дает Json?

как быстро объект получим на бэк то?

abc
18.04.2017
08:57:35
если так далеко копать то любая БД работает с plain file

какой то тут странный спор ниочем

Rocket
18.04.2017
08:57:54
ну не любая

есть еще in-memory

Dmitry
18.04.2017
08:59:04
есть моменты где скл четко, а есть где скл просто гнать надо

abc
18.04.2017
09:01:02
есть еще in-memory
любая хорошая in-memory умеет синкатся на disc. как тот же redis

Google
Rocket
18.04.2017
09:01:16
хех

dict в python тоже вполне себе база данных )

и синкаться умеет через pickle ))))

зачем все эти монги-шмонги...

abc
18.04.2017
09:02:02
ну в принципе да

в Erlang есть ETS тоже БД

Rocket
18.04.2017
09:02:36
угу... и std::vector в cpp

Dmitry
18.04.2017
09:02:49
в монго есть шардинг, а значит вычисления можно разнести по серверам

Dmitry
18.04.2017
09:03:22
сорян

Pavel
18.04.2017
09:04:47
в монго есть шардинг, а значит вычисления можно разнести по серверам
Какие вычисления разносить по серверам? 15 клиентов на 2 сервера за 5 баксов?

abc
18.04.2017
09:05:21
у всех же хайлоад и петабайты данных )))

Mikhail
18.04.2017
09:05:50
Расскажете про отдельные случаи? В каких именно монго хороша?
Я далеко не эксперт в этом. Но если вы правильно спроектировали реляционную БД и при каждом запросе у вас миллион join'ов, то лучше взять NoSQL БД. Лично я вижу это так, но я далеко не эксперт

Pavel
18.04.2017
09:06:49
В постгресе тоже есть жсон если так прям хочется. Индексируемый.

до шардинга еще надо дорасти дорасти. Какие еще аргументы за монго?

abc
18.04.2017
09:07:52
вот я тоже хотел услышать

а нет их

Pavel
18.04.2017
09:08:57
в ботах вообще нету такой пропускной способности чтобы шардинг понадобился. Тут хоть у одного ботовода он есть?

Это уже не говоря о том что шардинг это более высокоуровневое понятие чем sql/nosql и опять же в постгресе его можно сделать, разве что будет более коряво

Google
Dmitry
18.04.2017
09:10:04
Если вам нравится постгри то флаг в руки

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

дабавили поля?

Pavel
18.04.2017
09:10:39
Написать миграцию и применить ее

abc
18.04.2017
09:10:45
так что каждый день ?

Pavel
18.04.2017
09:11:11
Схема в sql это добро а не зло, она защищает от того чтобы данные превратились в адскую мешанину

Dmitry
18.04.2017
09:11:14
вчера добавили поля, сеня еще , а завтра удалим

будет писать альтер тейбл, а далее на обработке

поля нет, опппа

abc
18.04.2017
09:12:09
такие грязные данные можно писать в JSONB пока схема не устаканется. Мы так и делаем. Зато получаем честные транзакции

Pavel
18.04.2017
09:12:16
Да, именно так. Чтобы все было понятно где что на что поменяли а не хвататься потом за голову.

Dmitry
18.04.2017
09:12:42
в монго таких проблем нет

если делать все на 1 машине, то не спорю проблем нет

если парк машин, то обовление на каждой тот еще фокус

Pavel
18.04.2017
09:13:26
Там есть проблемы похуже - отсутствие схемы и формата данных, значит адская мешанина

abc
18.04.2017
09:13:40
я не представляю кейс, в котором сегодня поле есть а завтра нет. хрень полная

Pavel
18.04.2017
09:14:00
С ростом объема легаси подлерживать старые форматы данных становится нереально

Dmitry
18.04.2017
09:14:30
лан давай те,

как вы пользователя достаете из базы данных?

как добавляете?

Google
Dmitry
18.04.2017
09:15:51
раз уже тема телега девелоперлс

Pavel
18.04.2017
09:16:18
Шта значит как? Sql операторами конечно же

Dmitry
18.04.2017
09:16:41
давай те код

вот вам гошки код

type User struct { Userid int //ID пользователя Username string // Contact's username Firstname string // Contact's first name. Lastname string // Optional. Contact's last name. Timestamp time.Time // когда появился пользователь } user := User{} err = collectionUsers.Find(bson.M{"userid": message.Sender.ID}).One(&user) if err != nil { fmt.Println("-> не найден") err1 := collectionUsers.Insert(&User{message.Sender.ID, message.Sender.Username, message.Sender.FirstName, message.Sender.LastName, time.Now()}) if err1 != nil { fmt.Println("не смогли сохранить пользователя") fmt.Println(err1) } } else { fmt.Println("->есть") }

тут нет скл , база монго

могу любое поле в User вставить, оно будет совместимо

abc
18.04.2017
09:21:27
because we can ! (c)

Pavel
18.04.2017
09:30:35
могу любое поле в User вставить, оно будет совместимо
Это ужасная проблема, из-за которой собственно и придумали такое понятие как схему. Если каждый будет вставлять поля какие ему вздумается, данные станут нечитабельными.

Или удалять по ошибке

Dmitry
18.04.2017
09:32:15
ога выше еще скажите что drop database спасает сильно

abc
18.04.2017
09:32:26
удаляют / добавляют поля, а потом в коде 1000 проверок, есть ли такое поле или нет

Dmitry
18.04.2017
09:32:42
зачем делать проверки?

там будет пусто

abc
18.04.2017
09:33:01
ну получай свои нулы.

Dmitry
18.04.2017
09:33:06
"есть ли такое поле или нет" это скл , оператор же *

abc
18.04.2017
09:33:45
вот такое SELECT * FROM mytable меня отучили делать уже давно

Dmitry
18.04.2017
09:34:17
потому что sql проблемы с этим

Pavel
18.04.2017
09:34:29
зачем делать проверки?
Чтобы не положить случайно в скалярное поле коллекцию или строку туда где должно быть число.

Страница 725 из 4042