
Daniel
17.09.2018
18:55:38
Я тож на саблайме сидел

Dk
17.09.2018
18:56:42

Vasily
17.09.2018
18:57:02

Yaroslav
17.09.2018
18:57:30

Google

Pawel
17.09.2018
19:18:53


Никита
17.09.2018
19:28:34
Есть успешные известные реализации ?

Nathan
17.09.2018
19:32:08
кто пробовал запускать go-tdlib ?
[ 1][t 1][1537212656.747661829][TdDb.cpp:381][!Td] Destroy bad sqlite db because of: [Error : 0 : Wrong key or database is corrupted]
2018/09/17 19:30:56 NewClient error: 0 disk I/O error
чтото не понятное

Pawel
17.09.2018
19:34:11
Есть конечно, там же написано на оф сайте. Есть ещё nosql фреймворки, которые прям из фронта лупят в монгу. Что как бы намекает

Andrey
17.09.2018
19:34:28
Я когда говорю про SQL, я не говорю про БД, а про интрерфейс. Можно например запрашивать данные из фейсбука посредством SQL запросов, или любые другие, только драйвер нужен, который обработает этот запрос.
Любой GQL запрос, при условии что на бэке стоит реляционная БД, будет преобразован к SQL запросу, так что любой возможный запрос GQL будет мапиться в SQL, иначе это не имеет смысла.
Я там выше писал, что возможно в "таблица" как ответ будет не самым лучшим вариантом, но никто и не говорил, что SQL должен описывать как именно должны быть представленны данные, а только их набор.
Так вот если маппинг в итоге есть GQL -> SQL, логично ожидать, что кто-то не будет заморачиваться с еще одним языком, а прикрутит подмножество SQL. Лично я в этом случае более охотно его использую.

Daniel
17.09.2018
19:36:04


Roman
17.09.2018
19:36:45
Я когда говорю про SQL, я не говорю про БД, а про интрерфейс. Можно например запрашивать данные из фейсбука посредством SQL запросов, или любые другие, только драйвер нужен, который обработает этот запрос.
Любой GQL запрос, при условии что на бэке стоит реляционная БД, будет преобразован к SQL запросу, так что любой возможный запрос GQL будет мапиться в SQL, иначе это не имеет смысла.
Я там выше писал, что возможно в "таблица" как ответ будет не самым лучшим вариантом, но никто и не говорил, что SQL должен описывать как именно должны быть представленны данные, а только их набор.
Так вот если маппинг в итоге есть GQL -> SQL, логично ожидать, что кто-то не будет заморачиваться с еще одним языком, а прикрутит подмножество SQL. Лично я в этом случае более охотно его использую.
предлагаю эксперимент
query {
customer(id: "xyz") {
friends(ageRange: 18_to_25) {
name
employer {
name
}
}
}
}
в SQL и с соответствующим парсером.

Pavel
17.09.2018
19:36:52

Pawel
17.09.2018
19:37:49

Andrey
17.09.2018
19:38:34

Google

Andrey
17.09.2018
19:39:10

Daniel
17.09.2018
19:39:49

Roman
17.09.2018
19:40:09


Pawel
17.09.2018
19:41:04
Я когда говорю про SQL, я не говорю про БД, а про интрерфейс. Можно например запрашивать данные из фейсбука посредством SQL запросов, или любые другие, только драйвер нужен, который обработает этот запрос.
Любой GQL запрос, при условии что на бэке стоит реляционная БД, будет преобразован к SQL запросу, так что любой возможный запрос GQL будет мапиться в SQL, иначе это не имеет смысла.
Я там выше писал, что возможно в "таблица" как ответ будет не самым лучшим вариантом, но никто и не говорил, что SQL должен описывать как именно должны быть представленны данные, а только их набор.
Так вот если маппинг в итоге есть GQL -> SQL, логично ожидать, что кто-то не будет заморачиваться с еще одним языком, а прикрутит подмножество SQL. Лично я в этом случае более охотно его использую.
Оба решения имеют право на жизнь. От конкретного кейса зависит какое предпочтительней

Aleksandr
17.09.2018
19:43:24

Nathan
17.09.2018
19:43:47
да я пример main.go запускаю
нулевая или нет - кто ее знает

Aleksandr
17.09.2018
19:44:21
посмотри
база создается во время первого запуска

Nathan
17.09.2018
19:44:59
./.tdlib/... и тд создаються
запускаю в вагранте

Pawel
17.09.2018
19:45:05

Aleksandr
17.09.2018
19:45:47

Nathan
17.09.2018
19:46:47
-rw-r--r— 1 vagrant vagrant 3072 Sep 17 19:46 db.sqlite
-rw-r--r— 1 vagrant vagrant 32768 Sep 17 19:46 db.sqlite-shm
-rw-r--r— 1 vagrant vagrant 0 Sep 17 19:46 db.sqlite-wal
UseFileDatabase: true, // тут ставим false
будет работать

Pawel
17.09.2018
19:47:47

Aleksandr
17.09.2018
19:48:40

Nathan
17.09.2018
19:49:29
:) первым делом попробовал,
не понятно зачем там sqlite если и так вроде состояние сохраняет

Aleksandr
17.09.2018
19:51:14

Google

Roman
17.09.2018
19:55:39

Pawel
17.09.2018
20:03:30

Roman
17.09.2018
20:05:01

snip
17.09.2018
20:06:31
Ну судя по доке у них есть resource embedding

Roman
17.09.2018
20:11:15
честно говоря я очень скептически отношусь к слиянию API и DB
если endpoint только читает/записывает в бд то на первый взгляд кажется что зачем нужен API?!
но потом если нужно реализовать...
какие-то особенности в системе прав,
посылку мыла
вычисления
обратную связь (server-side events)
и т.д. и т.п.
и всё это в бд? звучит слишком хаотично.

Pawel
17.09.2018
20:11:27

Nathan
17.09.2018
20:11:40

Roman
17.09.2018
20:12:21

Pawel
17.09.2018
20:12:54

Roman
17.09.2018
20:13:10

Sergey
17.09.2018
20:14:10
хранимые процедуры навека

Pawel
17.09.2018
20:14:21

Aleksandr
17.09.2018
20:14:42

Roman
17.09.2018
20:15:08
ох... ну делайте как хотите, но я таки за семантическое разделение хранения и обработки

Pawel
17.09.2018
20:16:20

Nathan
17.09.2018
20:16:32

Pawel
17.09.2018
20:17:20

Aleksandr
17.09.2018
20:18:10

Nathan
17.09.2018
20:18:52
ок, посмотрю что там есть

Google

Aleksandr
17.09.2018
20:18:59

Nathan
17.09.2018
20:19:41
мне надо прочесть новые сообщения просто, смотрю как это сделать через tdlib

Aleksandr
17.09.2018
20:19:51

Roman
17.09.2018
20:20:11

Pawel
17.09.2018
20:22:00

Roman
17.09.2018
20:23:40

snip
17.09.2018
20:24:46
У рест есть преимущество - проще в реализации, проще масштабировать

Admin
ERROR: S client not available

Pawel
17.09.2018
20:25:35

snip
17.09.2018
20:25:43

Roman
17.09.2018
20:25:44

snip
17.09.2018
20:26:49

Roman
17.09.2018
20:27:57

snip
17.09.2018
20:28:11
Только с рест проще

Roman
17.09.2018
20:28:12
или ты про шардинг?

snip
17.09.2018
20:29:47
Тем что все сводится к прописыванию нужных апстримов

Roman
17.09.2018
20:30:33

snip
17.09.2018
20:32:03

Google

Roman
17.09.2018
20:32:19
нагрузка?
ставишь несколько инстансов GQL сервера и перед ними round-robin load balancer
в чём сложность то?

snip
17.09.2018
20:33:51
И две копии одного эндпоинт
Ну и в целом есть разница между несколько инстансов всей аппы и масштабирования только самых нагруженных кусков

Roman
17.09.2018
20:36:50

snip
17.09.2018
20:38:34
В случае с рест это просто добавить пару строчек в нгинкс

Roman
17.09.2018
20:40:21

snip
17.09.2018
20:43:18

Roman
17.09.2018
20:44:12

snip
17.09.2018
20:44:19

Roman
17.09.2018
20:45:10
микросервисы можно пилить как на GQL так и на REST..

snip
17.09.2018
20:45:32
И снова к началу)))

Диёр
17.09.2018
20:45:40

snip
17.09.2018
20:45:45
Да, можно
Можно и на grpc
Изначальный посыл был в том что рест имеет ряд преимуществ а именно более простая реализация и масштабироваться легче

Roman
17.09.2018
20:47:51
короче: подытоживаю:
GQL устраняет underfetching, но сложнее в реализации
REST проще, но решение underfetching'а со временем приводит к полнейшему аду спец-endpoint'ов который окажется сложнее реализации GQL
если вы со мной не согласны то переубедит вас только описанная проблема, с которой вы возможно рано или поздно столкнётесь.
в любом случае я желаю вам удачи и спокойной ночи! ?

snip
17.09.2018
20:48:11
В том числе за счёт использования микросервисов, так как отдельный эндпоинт может быть хоть отдельным микросервисом хоть кластером таких микросервисов