Size: a a a

2019 October 31

AK

A K in pro.elixir
доброго времени!
источник

DI

Dmitry (Deex) Ivanov in pro.elixir
Добрый день)
источник

u

unixman in pro.elixir
разве эрланг не позиционирует себя именно как предсказуемое по скрости (preemptible vm) и легкую масштабируемость, в противовес скорости.
источник

KA

Kanat Amren in pro.elixir
unixman
разве эрланг не позиционирует себя именно как предсказуемое по скрости (preemptible vm) и легкую масштабируемость, в противовес скорости.
Так и есть, но и скорость не помешала бы.
источник

KA

Kanat Amren in pro.elixir
unixman
разве эрланг не позиционирует себя именно как предсказуемое по скрости (preemptible vm) и легкую масштабируемость, в противовес скорости.
По ссылке на форум видно что не так всё плохо.
источник
2019 November 01

a

atanych in pro.elixir
а разве это законно, что Repo.stream генерит запросы в БД без LIMIT+OFFSET?
источник

a

atanych in pro.elixir
рельсовый find_each делает умнее
  User Load (2.9ms)  SELECT  "users".* FROM "users" WHERE ("users"."id" > 14058) ORDER BY "users"."id" ASC LIMIT $1  [["LIMIT", 1000]]
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Что значит без limit offset
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Как он по твоему стримит?
источник

a

atanych in pro.elixir
вот логи из PSQL
."locale", u0."referral_channel", u0."email", u0."challenge_ids", u0."avatar", u0."migration_version", u0."configuration_id", u0."inserted_at", u0."updated_at" FROM "users" AS u0
2019-11-01 13:44:13.609 +03 [63083] LOG:  execute fetch from <unnamed>/G2: SELECT u0."id", u0."nickname", u0."access_key", u0."online", u0."extra", u0."timezone_offset", u0."last_visit_at", u0."locale", u0."referral_channel", u0."email", u0."challenge_ids", u0."avatar", u0."migration_version", u0."configuration_id", u0."inserted_at", u0."updated_at" FROM "users" AS u0
2019-11-01 13:44:13.632 +03 [63083] LOG:  execute fetch from <unnamed>/G2: SELECT u0."id", u0."nickname", u0."access_key", u0."online", u0."extra", u0."timezone_offset", u0."last_visit_at", u0."locale", u0."referral_channel", u0."email", u0."challenge_ids", u0."avatar", u0."migration_version", u0."configuration_id", u0."inserted_at", u0."updated_at" FROM "users" AS u0
2019-11-01 13:44:13.666 +03 [63083] LOG:  execute fetch from <unnamed>/G2: SELECT u0."id", u0."nickname", u0."access_key", u0."online", u0."extra", u0."timezone_offset", u0."last_visit_at", u0."locale", u0."referral_channel", u0."email", u0."challenge_ids", u0."avatar", u0."migration_version", u0."configuration_id", u0."inserted_at", u0."updated_at" FROM "users" AS u0
2019-11-01 13:44:13.700 +03 [63083] LOG:  execute fetch from <unnamed>/G2: SELECT u0."id", u0."nickname", u0."access_key", u0."online", u0."extra", u0."timezone_offset", u0."last_visit_at", u0."locale", u0."referral_channel", u0."email", u0."challenge_ids", u0."avatar", u0."migration_version", u0."configuration_id", u0."inserted_at", u0."updated_at" FROM "users" AS u0
2019-11-01 13:44:13.724 +03 [63083] LOG:  execute fetch from <unnamed>/G2: SELECT u0."id", u0."nickname", u0."access_key", u0."online", u0."extra", u0."timezone_offset", u0."last_visit_at", u0."locale", u0."referral_channel", u0."email", u0."challenge_ids", u0."avatar", u0."migration_version", u0."configuration_id", u0."inserted_at", u0."updated_at" FROM "users" AS u0
2019-11-01 13:44:13.753 +03 [63083] LOG:  execute fetch from <unnamed>/G2: SELECT u0."id", u0."nickname", u0."access_key", u0."online", u0."extra", u0."timezone_offset", u0."last_visit_at", u0."locale", u0."referral_channel", u0."email", u0."challenge_ids", u0."avatar", u0."migration_version", u0."configuration_id", u0."inserted_at", u0."updated_at" FROM "users" AS u0
источник

a

atanych in pro.elixir
Źmićer Rubinštejn
Как он по твоему стримит?
вот здесь у меня пока и вопрос, как он стримит
источник

a

atanych in pro.elixir
нет ничего, что отсекает запрос, и трафик из базки дикий
источник

ŹR

Źmićer Rubinštejn in pro.elixir
А код покажи
источник

a

atanych in pro.elixir
defmodule UserExporter do
 @columns ~w( id email inserted_at updated_at )a

 def export(query) do
   path = "/tmp/users.csv"

   Repo.transaction fn ->
     query
     |> Repo.stream
     |> Stream.map(&parse_line/1)
     |> CSV.encode
     |> Enum.into(File.stream!(path, [:write, :utf8]))
   end
 end

 defp parse_line(user) do
   # order our data to match our column order
   Enum.map(@columns, &Map.get(user, &1))
 end
end


просто пример отсюда http://joeellis.la/streaming-with-ecto/
источник

T

Tharin in pro.elixir
Православный Раст в верху списка. Можно спать спокойно
источник

ŹR

Źmićer Rubinštejn in pro.elixir
atanych
defmodule UserExporter do
 @columns ~w( id email inserted_at updated_at )a

 def export(query) do
   path = "/tmp/users.csv"

   Repo.transaction fn ->
     query
     |> Repo.stream
     |> Stream.map(&parse_line/1)
     |> CSV.encode
     |> Enum.into(File.stream!(path, [:write, :utf8]))
   end
 end

 defp parse_line(user) do
   # order our data to match our column order
   Enum.map(@columns, &Map.get(user, &1))
 end
end


просто пример отсюда http://joeellis.la/streaming-with-ecto/
хз тогда
источник

A

Anatoliy Kovalchuk in pro.elixir
atanych
а разве это законно, что Repo.stream генерит запросы в БД без LIMIT+OFFSET?
через курсор видимо
источник

a

atanych in pro.elixir
Anatoliy Kovalchuk
через курсор видимо
При курсоре должен быть FETCH
источник

A

Anatoliy Kovalchuk in pro.elixir
судя по коду там как раз инициализиуется курсор
https://github.com/elixir-ecto/db_connection/blob/master/lib/db_connection.ex#L909
источник

ŹR

Źmićer Rubinštejn in pro.elixir
В доке написано, что по дефолту забирает 500 записей
источник