
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

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

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
в монго есть шардинг, а значит вычисления можно разнести по серверам

Rocket
18.04.2017
09:03:07

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

Pavel
18.04.2017
09:04:47

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

Mikhail
18.04.2017
09:05:50

Rocket
18.04.2017
09:06:21

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 вставить, оно будет совместимо

Sergey❄️
18.04.2017
09:19:08

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

Pavel
18.04.2017
09:30:35
Или удалять по ошибке

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
зачем делать проверки?
Чтобы не положить случайно в скалярное поле коллекцию или строку туда где должно быть число.

Dmitry
18.04.2017
09:34:55