Дмитрий
20.08.2017
15:02:46
10 000 * 1 000 000
Vladimir
20.08.2017
15:02:51
В первую очеред тарантул - это lua рантайм, что делает его непривлектальным для большой части населения
KlonD90
20.08.2017
15:02:57
да даже так
Дмитрий
20.08.2017
15:03:30
Я в курсе ну, поэтому это и нечто большее)
Google
KlonD90
20.08.2017
15:03:33
Vladimir
20.08.2017
15:04:00
Дмитрий
20.08.2017
15:04:36
Ну если вы так хотите это сравнить то пжлст)
для меня это пустой диалог, прошу прощения если что-то не так сказал)
Vladimir
20.08.2017
15:05:07
Я не хочу, я говорю что это несвязанные вещи
Дмитрий
20.08.2017
15:05:26
Как скажете)
KlonD90
20.08.2017
15:05:30
ну почему пустой. прикрутите плиз v8 к tarantool
Fedir
20.08.2017
15:06:23
parrot норм)0)0)
Vladimir
20.08.2017
15:07:00
KlonD90
20.08.2017
15:07:26
поздняк слегка
да был опрос меньше года назад. типа что делать sql этот или перенести с lua на v8
Nikolay
20.08.2017
15:07:27
KlonD90
20.08.2017
15:07:34
я не знаю зачем этот дурацкий sql (
Дмитрий
20.08.2017
15:07:34
Пустой по части споров кто, что, как и чем обозвал) V8 в тарантуле это видимо не цель разрабов, их устраивает lua и видимо на это есть причины
Google
KlonD90
20.08.2017
15:07:37
лучше бы к v8
Дмитрий
20.08.2017
15:07:54
Осипов вроде где то пояснил на одном из видосиков про тарантул почему они выбрали lua
KlonD90
20.08.2017
15:08:12
Дмитрий
20.08.2017
15:12:53
Хз, сколько людей столько и мнений, и языков программирования тоже много.
Vlad
20.08.2017
15:13:00
Кто может помочь с такой штукой.
Нужно из ноды запустить R-interpreter.
Делаю это делаю так
child = spawn('r', {
stdio: [
'pipe',
'pipe'
],
shell: true
});
После чего пытаюсь передать туда хоть что-нибудь, но увы.
Передаю вот так
child.stdin.write("console.log('Hello from R')\n");
child.stdin.end();
В output пусто.
Alexander
20.08.2017
16:01:53
Ребят, есть у кого-нибудь на freelance.ru бизнес-аккаунт? напишите в личку, пожалуйста, срочно нужно посмотреть заказчика одного проекта
Egor
20.08.2017
16:04:48
Egoarka
20.08.2017
16:35:36
всем приветик, не понимаю в чем трабл, пишу тест на моке, поднимаю сервак, делаю запрос, на стороне сервера после некоторой логики возвращаю статус код 413, но на респонсе выкидывает исключение с ошибкой ECONNRESET в итоге 413 отследить не могу, чяднт
Max
20.08.2017
16:45:18
Камрады, вопрос такой созрел. Как наиболее эффективно хранить One-to-Many связи ооочень большого количества элементов. К примеру, 10000 групп по 1000000 объектов (строк, чисел, etc.). Варианты:
1). Тупо стандартное решение на SQL. Конечно БД пережуёт 10 млрд строк, но чёт мне подсказывает, что будут проблемс, в том числе и с маштабированием)
2). Array of * в PostgreSQL - список должен влезть в 1gb
3). Массивы в MongoDB - тут уже в 64 мб и как это будет работать при решардинге - непонятно
4). List в Cassandra (2^31 элементов)
Задачи стандртные:
1). Получить список кусками
2). Добавить элемент в список (с проверкой на уникальность)
3). Удалить
4). Проверить существование в списке
В качестве данных DWORD (16 бит) или строки < 30 символов.
Хотелось бы услышать ваше мнение по поводу этих вариантов или рекомендации на какие-то другие БД.
Интересная задачка. Предположу что решение специально написанное под эту задачу окажется более эффективным чем решения предназначены для широкого круга задач вроде sql. И в качестве варианта я бы предположил бы рассмотреть ноду и хранение данных либо полностью в оперативке либо с использованием виртуальной памяти (своп) когда ос будет вытеснять на диск память которая не влезает в оперативку. А для сохранения данных записывать на диск только append-лог операций по данным.
Но для начала нужно провести расчеты сколько места будут занимать эти данные. В ноде массив из ста групп где у каждой массив из миллиона 64 битных чисел у меня на маке занял 780 мегабайт. Соотвественно потребуется где-то 78 гигабайт оперативки если хранить все данные в памяти. Да это много но сейчас вполне возможно найти сервера и с большим количеством оперативки. При хранении данных ста групп в оперативке у меня 10k чтений из случайной группы случайного элемента заняло 1.5 миллисекунды. А в случае с виртуальной памятью эти 10k рандомных чтений занимают примерно 5 секунд что в 5 тысяч раз дольше. Но даже тысячу чтений за полсекунды тоже неплохой результат. Сомневаюсь что sql и большинство no-sql баз данных покажут такую скорость. Вот скрипт которым я проводил замеры
var k = 100;
var n = 1000000;
var arr = new Array(k);
for(var j = 0; j < k; j++){
arr[j] = new Array(n);
for(var i = 0; i < n; i++){
arr[j][i] = Math.random();
}
}
setTimeout(bench,1000);
function bench(){
var value = 0;
var time = Date.now();
for(var i = 0; i < 10000; i++){
var index1 = Math.random()*k|0;
var index2 = Math.random()*n|0;
value+=arr[index1][index2];
}
console.log(value, Date.now()-time);
setTimeout(bench,1000)
}
Egoarka
20.08.2017
17:14:59
не, нифига, но вот наткнулся на этот ишью, пишут, что трабла в ноде
https://github.com/nodejs/node/issues/947#issue-58838888
KlonD90
20.08.2017
17:54:15
Бред
Не вижу никакого индекса да и редис тот же 1лям операций в секунду выдаст, это на уровне ноды будет тупняк. Тарантул тоже спокойно выдаст 200к транзакций(или миллион если писать на c операции)
Ҫѐҏӗѫӑ
20.08.2017
18:26:10
@vkurchatkin драма с esm — ?
нахрен лодаш из citgm надо, все верно
Vladimir
20.08.2017
18:26:44
Да этот тип конченный
Помнится давно былая какая то драма со слиянием с андерскором
И уже тогда с ним стало все понятно
Ҫѐҏӗѫӑ
20.08.2017
18:27:36
да, было дело
Google
Ҫѐҏӗѫӑ
20.08.2017
18:27:49
да и вообще его поведение в репке лодаша сомнительное
по отношению к контрибьюторам
Vladimir
20.08.2017
18:29:06
Ну это его дело, как бы
Я вообще не понимаю людей которые используют лодаш и подобное
Gleb
20.08.2017
18:47:21
Ҫѐҏӗѫӑ
20.08.2017
18:48:12
Vladimir
20.08.2017
18:48:52
настоящие разработчики сами пишут свои утилы
Gleb
20.08.2017
18:49:24
Ҫѐҏӗѫӑ
20.08.2017
18:50:16
аларм
KlonD90
20.08.2017
18:50:20
В каком плане?
Gleb
20.08.2017
18:50:21
Ҫѐҏӗѫӑ
20.08.2017
18:50:23
айот и жс в одном предложении
Дмитрий
20.08.2017
18:51:05
Gleb
20.08.2017
18:52:29
Ну я имею ввиду решения с компилированием JS. Всё таки в БД динамическую типизацию не очень хорошо впихивать, как бы там V8 её не оптимизировал.
Дмитрий
20.08.2017
18:52:43
Там же просто по возможностям урезанные версии
Ҫѐҏӗѫӑ
20.08.2017
18:52:48
я вот только не понял bnoordhuis его идиотом назвал или нет?
или это такое тонкое
Vladimir
20.08.2017
18:53:24
Ҫѐҏӗѫӑ
20.08.2017
18:54:13
ясненько
Google
Gleb
20.08.2017
18:54:39
Ҫѐҏӗѫӑ
20.08.2017
18:54:49
Дмитрий
20.08.2017
18:55:30
Антон
20.08.2017
18:55:52
Gleb
20.08.2017
19:00:02
Vladimir
20.08.2017
19:06:07
@chicoxyzzy понеслось
Ҫѐҏӗѫӑ
20.08.2017
19:06:58
это где?
Vladimir
20.08.2017
19:07:27
там же
Max
20.08.2017
19:59:02
Ну я имею ввиду решения с компилированием JS. Всё таки в БД динамическую типизацию не очень хорошо впихивать, как бы там V8 её не оптимизировал.
На самом деле после того как v8 оптимизирует функцию от динамической типизации не остается и следа - все объекты имеют строгий (скрытый внутри v8) тип, благодаря которому в скомпилированный ассемблер функция может загружать свойства прямо по смещению. В общем если не делать глупостей на js которые приводят к деоптимизациям или полиморфизму то быстродействие не сильно то и будет отличаться от кода написанного на плюсах, недаром есть статьи и доклады в которых сравнивают плюсы с жс и в некоторых случаях жс даже выигрывает. В итоге сравнивать с плюсами нужно больше по удобству разработки). И кстати есть еще другой момент - даже если в какие-то вещи мы выносим в с++ расширение к ноде то может даже оказаться что интероп(пересылка данных между с++ и js) окажется медленней чем работа с данными в самом джаваскрипте
Gleb
20.08.2017
20:04:15
Max
20.08.2017
20:13:32
Да, он оптимизирует ваш hashmap в вектор, но он во первых хранит тип (в том числе для примитивов), а во вторых GC и heap в 1.4Gb
Если бы heap ограничивался бы 1.4 гигами то я бы не советовал бы ноду. Там просто дефолтные настройки такие, добавляем флаг --max_old_space_size и устанавливаем сколько угодно гигабайт. Насчет gs то во первых можно не создавать лишних объектов на каждый чих, а во вторых он достаточно быстр (по крайней мере где-то я читал что быстрее чем некоторые паттерны автоматического gs на плюсах вроде подсчета ссылок). Ясно что на плюсах есть все интрументы и можно все круто оптимизировать но стоят ли того затраты на удобства разработки (учитывая еще что нужно хорошо знать плюсы)
Sergey
20.08.2017
20:21:16
Проблема ещё в том что в js много неявного приведения типов, это сложно как то оптимизировать
Таймураз
20.08.2017
20:23:32
Если да, то хранить всех кусками на разных серверах, за нужным индексом обращаться в определенную базу
Max
20.08.2017
20:24:58
Дмитрий
20.08.2017
22:13:25
А где почитать это?
Vladimir
20.08.2017
22:13:40
https://github.com/nodejs/CTC/issues/164
Дмитрий
20.08.2017
22:14:05
Благодарю)
Ilgiz
21.08.2017
04:51:17
если функция возвращяет обьект ошибки то try catch что не увидит его?
функция моя вызывается через await functionname()
Google
Ilgiz
21.08.2017
04:51:53
он не выбрасывает ошибку
arts
21.08.2017
04:53:26
Не return, а throw.
Ilgiz
21.08.2017
04:54:50
Не return, а throw.
то есть всегда я должен вместо return использовать throw? так как везде надо обрабытывать ошибку
ZeroFQ
21.08.2017
04:57:30
Ilgiz
21.08.2017
04:58:57
ZeroFQ
21.08.2017
04:59:11
Да