|   |   | 
| 
 | Реализация РН на NoSQL c MapReduce | ☑ | ||
|---|---|---|---|---|
| 0
    
        Garykom гуру 16.06.17✎ 11:27 | 
        Пытаюсь на NoSQL базе данных (CouchDB) сделать аналог 1С-ных Регистров накопления (остатки и обороты).
 К примеру банальная задача остатков товаров на складах и документов движения (приход/расход). Если сделать остатки через reduce-функцию то проблема что при добавлении/изменении документа движения будет происходить полный пересчет по всем документам. В 1С это решали например хранением промежуточных итогов на начало каждого месяца и на лету считаем документы с начала нужного месяца чтобы получить итог на требуемую дату. Вот как бы красиво извратиться на CoudhDB? Причем чтобы не потерять возможность распараллеливания (и ускорения) вычислений остатков на нодах кластера? | |||
| 1
    
        Asmody 16.06.17✎ 11:31 | 
        (0) Ну и сделай еще одну коллекцию (или как там оно называется) с промежуточными остатками     | |||
| 2
    
        Asmody 16.06.17✎ 11:33 | 
        В записях придумай признак актуальности. При записи движений "задним числом" сбрасывай признак, и каким-нибудь регламентом пересчитывай.     | |||
| 3
    
        Garykom гуру 16.06.17✎ 11:34 | 
        (1) Ага, т.е. на каждый месяц создаем свою коллекцию а все последующие используют только одну предыдущую.
 Т.е. поменяли в прошлом месяце документ, пересчитается только текущий месяц начало а прошлые не трогаются так? | |||
| 4
    
        Garykom гуру 16.06.17✎ 11:34 | 
        (2) Там фишка что ничего придумывать не надо все встроено эти признаки ))     | |||
| 5
    
        Asmody 16.06.17✎ 11:35 | 
        Операция filter там есть?     | |||
| 6
    
        Garykom гуру 16.06.17✎ 11:38 | 
        (5) Есть map-функции которые пересчитываются только для измененных доков, это и есть некий фильтр для reduce.
 Они выдают готовую выборку, каждый документ превращается в 0 или несколько "записей" в этой "выборке". | |||
| 7
    
        Garykom гуру 16.06.17✎ 11:38 | 
        (6)* 0, 1 или несколько     | |||
| 8
    
        Asmody 16.06.17✎ 11:40 | 
        (6) Это как? По идеологии, map работает со всей коллекцией.     | |||
| 9
    
        Garykom гуру 16.06.17✎ 11:42 | 
        (8) Он работает по отдельности с каждым элементом и считается только для тех которые изменили ))     | |||
| 10
    
        Garykom гуру 16.06.17✎ 11:44 | 
        (9)+ Фишка в офигенной распареллеливании операции filter из коробки, на RDBMS один "select" фига с два так распараллелишь     | |||
| 11
    
        Garykom гуру 16.06.17✎ 11:45 | 
        (10)+ Недостаток оно место на диске жрет как не в себе и удаление данных не помогает почти     | |||
| 12
    
        Fragster гуру 16.06.17✎ 11:45 | 
        (10) nosql придуман совсем не для @filter@ и работает оно про определению хуже реляционных колоночных БД     | |||
| 13
    
        Fragster гуру 16.06.17✎ 11:47 | 
        а костыли с отдельными объектами-фильтрами, хранящими в себе ключи объектов, удовлетворяющих фильтрам - это намного хуже, чем индексы     | |||
| 14
    
        Garykom гуру 16.06.17✎ 11:47 | 
        (12) Не хуже/лучше, а просто "по другому".
 Смотри вот у тебя есть 10 компов, попробуй используя их ускорить работу одной базы обычной реляционной БД? | |||
| 15
    
        Лефмихалыч 16.06.17✎ 11:47 | 
        (0) это как мартышке хобот пришить. Оно придумано не для этих задач     | |||
| 16
    
        Fragster гуру 16.06.17✎ 11:47 | 
        (14) в какой конкретно задаче?     | |||
| 17
    
        Лефмихалыч 16.06.17✎ 11:48 | 
        (14) твоему велосипеду понадобятся эти самые 10 компов, чтобы только обеспечить сравнимую с реляцинной БД производительность...     | |||
| 18
    
        Garykom гуру 16.06.17✎ 11:48 | 
        (16) В задаче @filter@ - обычный select с условием     | |||
| 19
    
        Fragster гуру 16.06.17✎ 11:49 | 
        можно сделать кластеризацию таблиц по хеш-ключам какого-нибудь индекса основного или зеркалирование и распараллеливание на этапе запроса.     | |||
| 20
    
        Garykom гуру 16.06.17✎ 11:49 | 
        (17) Для одного юзера да, но особенность что даже 1000 юзеров будет работать так же как 1 на этих 10 компах-серврах ))     | |||
| 21
    
        Garykom гуру 16.06.17✎ 11:50 | 
        (19) Очень смешно, тут ничего специально делать на CouchDB не надо, как для одной ноды так и для кластера один код функций mapreduce     | |||
| 22
    
        Лефмихалыч 16.06.17✎ 11:50 | 
        (20) ну, пока это просто слова.
 Кроме того, в результате этой твоей деятельности получится эдакая машина руба голдберга, которую упорешься майнтейнить, мне кажется. | |||
| 23
    
        Fragster гуру 16.06.17✎ 11:51 | 
        (18) вот именно, что nosql придуман для хранения неструктурированной информации, и отдельные признаки "структур" хранятся также - ключ - значение фильтра, значение - список ключей. из-за этого очень много накладных расходов именно на такое использование.
 и если денормализация при увеличении нагрузки в реляционных БД делается очень просто, то материализрованные фильтры "mongo работают очень быстро, пока файл данных не превышает оперативныую память" - это очень смешно... | |||
| 24
    
        Garykom гуру 16.06.17✎ 11:51 | 
        (22) Подумай как вк и прочие фэйсбуки считают лайки?     | |||
| 25
    
        Garykom гуру 16.06.17✎ 11:52 | 
        (23) У rdbms проблема что добавление памяти не сильно помогает, упираемся в cpu.
 Тут же легкость заюзать нужное кол-во cpu как и сколько угодно памяти. | |||
| 26
    
        Fragster гуру 16.06.17✎ 11:53 | 
        (21) ну, если СУБД изначально разрабатывалась для кластеров - то ничего делать и не надо. если нет - то надо. если реализация кластера коучдб скрыта от тебя, то это не значит, что её нет. точно также оракл/мсскуль/постгре/майэскуэль можно настроить в работе в кластере, используя стратегии, подходящие для конкретных задач.     | |||
| 27
    
        Лефмихалыч 16.06.17✎ 11:54 | 
        (24) у них взрослые ЦОДы с взрослыми вычислительными ресурсами. Они на вот эти хороводы из десяти писюков, в едином порыве реализующих одну БД, водить не станут. Ибо это дороже и вообще - пороховая бочка.     | |||
| 28
    
        Fragster гуру 16.06.17✎ 11:56 | 
        а с самого начала автору надо посмотреть, что такое map/reduce, а потом покурить, например, про materialized view в постгре     | |||
| 29
    
        Garykom гуру 16.06.17✎ 11:58 | 
        (27) Речь не про "хороводы писюков", в этих "взрослые ЦОДы" никакие MSSQL|ORACLE не помогут без применения NoSQL в нужных местах.     | |||
| 30
    
        Лефмихалыч 16.06.17✎ 11:59 | 
        (29) ну, а вот ты задумал хреновину, с помощью которой и nosql помогать перестанет     | |||
| 31
    
        Garykom гуру 16.06.17✎ 12:00 | 
        (28) Думаем что движок реляционной БД не заточенный для NoSQL, в который прикрутили "materialized view" справляется лучше чем заточенная NoSQL изначально с этими view?     | |||
| 32
    
        Вафель 16.06.17✎ 12:00 | 
        тут я понимаю цель не в том чтобы победить реляционные дб, а просто изучить как работает носкл     | |||
| 33
    
        Fragster гуру 16.06.17✎ 12:00 | 
        (29) да, только реализация РН - это не то самое "нужное место". тебе нужно обеспечить ACID, так что используй подходящие средства     | |||
| 34
    
        Garykom гуру 16.06.17✎ 12:00 | 
        (30) nosql это не просто хранилище пар ключ/значение а много больше     | |||
| 35
    
        Fragster гуру 16.06.17✎ 12:01 | 
        (31) а materialized view - это не nosql, это типа таблиц итогов. nosql в задаче (0) вообще нафиг не нужен     | |||
| 36
    
        Fragster гуру 16.06.17✎ 12:01 | 
        (34) да, но зачем делать из апельсина грушу?     | |||
| 37
    
        Garykom гуру 16.06.17✎ 12:02 | 
        (33) ACID (точнее некий аналог) в данном представителе NoSQL есть "из коробки" в виде "ревизий документов".     | |||
| 38
    
        Fragster гуру 16.06.17✎ 12:02 | 
        nosql в постгре - это скорее json колонки     | |||
| 39
    
        Asmody 16.06.17✎ 12:02 | 
        (31) Ну, вообще-то, для "всего такого" давным давно придумали OLAP. Который, суть, и есть хранилище заранее рассчитанных данных. И, да, пересчет кубов — это небыстрая и нечастая операция.     | |||
| 40
    
        Fragster гуру 16.06.17✎ 12:02 | 
        (37) ну давай, реализуй мне контроль остатков для двух параллельно работающих пользователей.     | |||
| 41
    
        Вафель 16.06.17✎ 12:02 | 
        Для простого хранения пар ключ / значение есть более специализированные инструменты     | |||
| 42
    
        Garykom гуру 16.06.17✎ 12:02 | 
        (35) (36) ОК не получится груша, вернусь к апельсинам или даже яблокам ))     | |||
| 43
    
        Лефмихалыч 16.06.17✎ 12:03 | 
        ну, да, - каким-то таким же образом придумали анальный секс     | |||
| 44
    
        Garykom гуру 16.06.17✎ 12:03 | 
        (40) А вот это был следующий вопрос )) Уже тоже подумал что прикольно получается     | |||
| 45
    
        Fragster гуру 16.06.17✎ 12:03 | 
        (44) стоя, в гамаке и под ёжин сбажин?     | |||
| 46
    
        Garykom гуру 16.06.17✎ 12:04 | 
        (44)+ Когда проводим документу - а реальные остатки видим по отчетам только через некоторое время.
 Но есть в помощь что видно что остатки сча не совсем актуальные и еще считаются!! | |||
| 47
    
        Fragster гуру 16.06.17✎ 12:04 | 
        (46) извините, я не могу сделать для вас резерв, так как не знаю, хватит ли товара на складе...     | |||
| 48
    
        Garykom гуру 16.06.17✎ 12:05 | 
        (47) гыгыгы - ага когда при прикидывании структуры вышла такая фигня ржал ))     | |||
| 49
    
        Garykom гуру 16.06.17✎ 12:06 | 
        (48)+ Но учитывая что дофига торговиков работают "закрывая минуса" уже отгруженные то?     | |||
| 50
    
        spock 16.06.17✎ 12:08 | 
        (37) А можешь на пальцах объяснить как ACID реализован?
 Я себе слабо представляю, как http-сервер (а CouchDB снаружи выглядит им, и работает через http) может выполнить insert/update + delete в два вызова, не сломав ACID? | |||
| 51
    
        Garykom гуру 16.06.17✎ 12:08 | 
        (47) Это выглядит как сначала делаем резерв и работаем дальше без тормозов.
 А потом оно сообщает через некоторое время - "резерв сделать не удалось". И пущай юзер думает дальше )) | |||
| 52
    
        Fragster гуру 16.06.17✎ 12:09 | 
        (49) молодцы. теперь давай придумаем wms, которой приходят задания на сборку с конкретных мест, но мы не знаем, сколько на конкретном месте лежит товара...     | |||
| 53
    
        Garykom гуру 16.06.17✎ 12:09 | 
        (50) Документы имеют "ревизии", при считывании дока ее получаем.
 При попытке сохранить документу передаем старую считанную ревизию, если мы опоздали и кто то переделал док то выйдет ошибка. Или док сохранится и получит новую ревизию. | |||
| 54
    
        Fragster гуру 16.06.17✎ 12:10 | 
        (51) херовенький выход     | |||
| 55
    
        Garykom гуру 16.06.17✎ 12:10 | 
        (53)+ "Ревизия" это просто длинный номер-число который все увеличивается при каждом сохранении/изменении.     | |||
| 56
    
        Garykom гуру 16.06.17✎ 12:11 | 
        (54) Думаешь для юзеров лучше ждать сидя тоскливо перед экраном когда там документа проведется?     | |||
| 57
    
        spock 16.06.17✎ 12:13 | 
        (53) Не, такой сценарий из реляционной жизни:
 1. Открыли транзакцию; 2. update'нули запись в одной таблице; 3. delete'нули запись из другой таблицы, если в третьей таблице select'нулось нужное и подходящее. 4. Если чего-то не select'нулось, то все откатить, иначе зафиксироваться. | |||
| 58
    
        Вафель 16.06.17✎ 12:13 | 
        (53) ну собственно в 1с точно также для справочников/документов     | |||
| 59
    
        Garykom гуру 16.06.17✎ 12:16 | 
        (57) Прикинь нету транзакций, совсем нету... ибо они нафиг не нужны ибо плохо поддаются кластеризации ))     | |||
| 60
    
        spock 16.06.17✎ 12:17 | 
        (59) А я же к этому и веду. А как тогда можно говорить про ACID?
 ps: я не критикую, а присматриваюсь к этой субд. | |||
| 61
    
        Garykom гуру 16.06.17✎ 12:21 | 
        (60) ACID это термин для реляционных БД, тут немного иное.
 Суть что нельзя сделать кучу изменений "оптом" в одной транзакции. Каждый документ или "запрос" (в реальности функция map или reduce для view) могут обрабатываться на своей ноде совершенно параллельно и почти не зависимо. | |||
| 62
    
        Garykom гуру 16.06.17✎ 12:23 | 
        (61)+ Тьфу точнее "запросы" как раз легко делятся на кучу узлов-нод в кластере где и параллельно выполняются     | |||
| 63
    
        Вафель 16.06.17✎ 12:24 | 
        (62) А транзакции то вообще есть?     | |||
| 64
    
        Garykom гуру 16.06.17✎ 12:24 | 
        (62)+ Но это не запросы, это код функций на JS с входными и выходными данными.
 Причем за пределы входных данных функция выйти не может, вот что есть на входе с тем и работай! | |||
| 65
    
        Garykom гуру 16.06.17✎ 12:24 | 
        (63) А зачем?     | |||
| 66
    
        Fragster гуру 16.06.17✎ 12:24 | 
        (56) ну, "ждать" целых пол секунды - не так долго     | |||
| 67
    
        Вафель 16.06.17✎ 12:25 | 
        ну и в термине асид нет ничего про то как устроена база.
 Это про то, что транзакция неделима и либо применяется вся либо нет | |||
| 68
    
        Вафель 16.06.17✎ 12:25 | 
        (65) А как ты параллельность без транзакций хочешь делать?     | |||
| 69
    
        Garykom гуру 16.06.17✎ 12:27 | 
        (66) Гм а кто мешает в интерфейсе подождать тогда эти полсекунды (для NoSQL пусть оно как RDBMS по скорости условно пашет) и только потом отдать управлению юзеру?     | |||
| 70
    
        Fragster гуру 16.06.17✎ 12:28 | 
        (69) в том-то и дело, что не так оно по скорости пашет     | |||
| 71
    
        Garykom гуру 16.06.17✎ 12:28 | 
        (68) Смотри у тебя рота выстраивается в ряд.
 Транзакции это когда каждого солдатика по очереди в нужное место ставим, сначала 1, затем 2-й и т.д. А NoSQL это они сами одновременно все идут и становятся на нужное место )) | |||
| 72
    
        Garykom гуру 16.06.17✎ 12:30 | 
        (70) Две кривые кол-во юзеров/мощность железа и когда пересекутся?
 Для rdbms проблема что как железо не увеличивай один фиг пару лямов юзеров в одной базе не потянет... | |||
| 73
    
        Garykom гуру 16.06.17✎ 12:31 | 
        (71) +ну или не становятся в ряд, ибо "не шмогла" ))     | |||
| 74
    
        Fragster гуру 16.06.17✎ 12:31 | 
        (71) то, что нужно сначала определить нужное место, естественно, забываем?
 для лайков, тегов, комментов (да и то с ограничениями) это непринципиально, а для всего, что требует контроля - это ключевой момент. и бизнес - это такая вещь, что без контроля - никуда. разве только касса с онлайн сканированием с помощью СШК может работать без контроля, да и то только в простейших случаях. а как только всякие маркетологи и егаисами появляются - всё, пц. | |||
| 75
    
        spock 16.06.17✎ 12:31 | 
        (65) Например, для этого в одной транзакции:
 1. Записать расходный документ (шапка + тч); 2. Уменьшить остатки в спец. регистре; | |||
| 76
    
        Garykom гуру 16.06.17✎ 12:32 | 
        (74) Ага то то в 1С многие начинают приходить к механизмам "отложенного проведения" в регламентных заданиях по ночам...     | |||
| 77
    
        Вафель 16.06.17✎ 12:32 | 
        (71) Это если у всех есть свои места. или неважно где кто стоит.
 А если в нужное место нужно каждого поставить, то будет конкуренция | |||
| 78
    
        Fragster гуру 16.06.17✎ 12:32 | 
        (72) ну, пару лямов пользователей вряд ли будут собирать заказы с одного склада...     | |||
| 79
    
        Вафель 16.06.17✎ 12:33 | 
        (76) если контроль остатков не нужен, то можно не проводить сразу, а отложенно вообще по всем регистрам.
 Тогда транзакции не нужны | |||
| 80
    
        Garykom гуру 16.06.17✎ 12:34 | 
        (75) В NoSQL все не так это разные операции без транзакции.
 1. Запись расходного документа ACID 2. Уменьшение остатка - не ACID, сразу об этом можно узнать что "остатки кривые" оно в фоне считается, и когда будет готово об этом узнаем. | |||
| 81
    
        Garykom гуру 16.06.17✎ 12:34 | 
        (78) Амазон?     | |||
| 82
    
        Fragster гуру 16.06.17✎ 12:34 | 
        (76) себестоимость можно и попозже посмотреть. а вот контроль остатков - нет.     | |||
| 83
    
        spock 16.06.17✎ 12:35 | 
        +(78)  А два менеджера на процентах с продаж дефицитного товара запросто :)     | |||
| 84
    
        Fragster гуру 16.06.17✎ 12:35 | 
        (81) на одном складе? там десятки операторов и всё.     | |||
| 85
    
        Garykom гуру 16.06.17✎ 12:36 | 
        (82) Да блин кто мешает контроль остатков сделать через отдельный документ?
 Если уж так нуна... Будут просто такие же тормоза как и в rdbms | |||
| 86
    
        Garykom гуру 16.06.17✎ 12:36 | 
        (84) Речь про заказы и резервы товаров     | |||
| 87
    
        Fragster гуру 16.06.17✎ 12:40 | 
        (86) резервы в минус не всегда позволительны     | |||
| 88
    
        orefkov 16.06.17✎ 12:40 | 
        (24)
 Как-как - приблизительно, вот как. Лайки считать - не деньги в кассе, плюс-минус десяток всем пофиг. Видал на ютубах, когда популярное видео выложат - просмотров 301, лайков 2000 ? | |||
| 89
    
        spock 16.06.17✎ 12:40 | 
        (85) Выбор такой?
 1. Супербыстро, но не точно; 2. Точно, но не супербыстро. | |||
| 90
    
        Garykom гуру 16.06.17✎ 12:41 | 
        (88) Прям описал картинку на типичном оптовом складе, а часто и розничном магазине ))     | |||
| 91
    
        Garykom гуру 16.06.17✎ 12:41 | 
        (89) угу     | |||
| 92
    
        orefkov 16.06.17✎ 12:45 | 
        О, я хочу чтобы я когда деньги куда-то переводил, сначала там прибавляли, и только потом, когда-нибудь, проверяли, что они у меня есть :)     | |||
| 93
    
        Garykom гуру 16.06.17✎ 12:47 | 
        (92) Угадай как работают VISA с прочими Мастеркард ?     | |||
| 94
    
        spock 16.06.17✎ 12:50 | 
        (92) :)
 (93) Нет! Они так не работают. | |||
| 95
    
        Garykom гуру 16.06.17✎ 12:52 | 
        (94) Раньше только так и работали, просто есть лимиты списания сумм без проверки/резервирования их наличия.
 В нынешнее время когда каналы связи намного лучше без предварительной связи с банком-эмитентом и проверки обычно нифига не дают. Исключения старые карточки (без чипов только магнитная полоска) или старые терминалы без чипов, там еще может произойти когда списывают в минус )) | |||
| 96
    
        Garykom гуру 16.06.17✎ 12:55 | 
        (95)+ Учтите все (почти) банковские эквайринговые терминалы умеют работать в режиме "оффлайн кассы".
 Т.е. обмен с банком и списания пройдет не в момент пробития чека а при связи с банком при "обмен данными". Смотря как настроены, но так уже давно банки не настраивают, только онлайн. Редкие исключения это зарубежные платиновые (ВИП) карты. | |||
| 97
    
        asady 16.06.17✎ 12:55 | 
        (0) РН от 1С вещь спорная.
 предлагаю не заморачиваться и писать изменения только текущей датой и хранить только остатки на начало текущего дня. | |||
| 98
    
        orefkov 16.06.17✎ 12:58 | 
        Я вот просто не понимаю, какой же это должен быть СКЛАДИЩЕ и БАЗИЩЕ, чтобы там требовалась мощь десятка современных серверов?
 В 2004 годе у меня на атлонишке гигагерцевом с одним гигом оперативы и 80гектарным винтом крутился терминальный сервер, на котором 30-40 юзеров работали на оптовом складе в семёрке. Где, на минуточку, не то что параллельности не было, а единовременно мог проводится только ОДИН документ. А на современном железе на одом компе при правильных алгоритмах работы не знаю, до тыщи народу наверное смогут работать без тормозов, а вся база в оперативке будет сидеть. То есть если для задачи потребно уже десять компов, то один хрен там какие-то доморощенные самописки не будет юзать. | |||
| 99
    
        Вафель 16.06.17✎ 12:59 | 
        (97) А задним число изменения запретить     | |||
| 100
    
        orefkov 16.06.17✎ 13:01 | 
        (96)
 Ты вообще не понимаешь, о чём речь. В те времена, о которых ты говоришь, карта была вещь для элиты, и была она КРЕДИТНАЯ. Поэтому там проверка не выполнялась потому, что банк-эмитент давал гарантию, что счёт будет оплачен по-любому. Поэтому и карты банк кому попало не выдавал. А массовое распространение карт как средства обычного платежа началось именно тогда, когда появилась возможность проверять на них бабки в реальном времени. | |||
| 101
    
        Garykom гуру 16.06.17✎ 13:03 | 
        (100) Ха, любая дебетка де факто "кредитная" и иногда при редких сбоях владелец карты об этом узнает ))     | |||
| 102
    
        orefkov 16.06.17✎ 13:04 | 
        (99)
 Кстати, забугорные системы так и работают. Все правки только через сторнирование. В ТЗ так и пишут - возможность изменить проведённый документ должна быть исключена. | |||
| 103
    
        Garykom гуру 16.06.17✎ 13:06 | 
        (102) Да убирание работы задним числом конечно слегка облегчает реализацию, но что делать с мелкими исправлениями когда 10-20 раз документ "перепровели".     | |||
| 104
    
        orefkov 16.06.17✎ 13:06 | 
        (101)
 Не при сбоях, а при оплате за бугор, когда через пару дней могут досписать курсовую разницу. Или доначислить. Всяко у меня бывало. Но один фиг - в момент платежа проверяет, что денег хватает. Так что здесь как-раз тоже проблема работы "задним числом". | |||
| 105
    
        orefkov 16.06.17✎ 13:09 | 
        (103)
 У них пока документ правят, он как бы "проект документа", и остатки двигает исключительно текущие, актуальные. Даже дата бывает открытая, "скользащая". Но как только приняли и зафиксировали сделку - всё, аля-улю. Что написано пером, не вырубишь топором. | |||
| 106
    
        Garykom гуру 16.06.17✎ 13:13 | 
        (104) Нет у меня был вполне себе тут на местной заправке конкретный такой сбой.
 Когда транзакция сначала прошла, потом почему то отменилась, а потом через неделю списали в минус (на карте денег столько не было). Карта чистая дебетка, если бы не было этого сбоя с оплатой заправки в пару тыщ то пошел бы в банк разбираться )) | |||
| 107
    
        Garykom гуру 16.06.17✎ 13:14 | 
        (106)+ Еще хорошо что это их сбой был и % за пользование овердрафтом не начислили.     | |||
| 108
    
        orefkov 16.06.17✎ 13:15 | 
        +(104) (106)
 Так бывает, и это не кредит, а овердрафт. Банк по нему может потом тебе адские проценты выкатить. | |||
| 109
    
        Garykom гуру 16.06.17✎ 13:15 | 
        (105) Т.е. делаем два вида остатков, одни постоянные и другие временные.
 Временные становятся постоянными когда? | |||
| 110
    
        Garykom гуру 16.06.17✎ 13:16 | 
        (108) Эээ овердрафт это по нашим законам и есть кредит...     | |||
| 111
    
        orefkov 16.06.17✎ 13:16 | 
        (106)
 Кстати, тоже на одной лукойловской автоматической заправке постоянно - списание, отмена и тут же снова списание. Заговор у них какой-то... | |||
| 112
    
        Garykom гуру 16.06.17✎ 13:18 | 
        (110)+ "1. В случаях, когда в соответствии с договором банковского счета банк осуществляет платежи со счета несмотря на отсутствие денежных средств (кредитование счета), банк считается предоставившим клиенту кредит на соответствующую сумму со дня осуществления такого платежа."
 http://www.consultant.ru/document/Cons_doc_LAW_9027/cd4e8de1e04a7d8f27dd2d94f981bf2031494d0b/ | |||
| 113
    
        Garykom гуру 16.06.17✎ 13:18 | 
        (111) Хм тоже на Лукойле было - точно заговор ))     | |||
| 114
    
        asady 16.06.17✎ 13:19 | 
        (105)+1
 док при проведении остатки на начало дня не двигает никак. хоть сколько раз перепроводи а вот при закрытии дня - остатки посчитали и тогда уже всё- день закрыт - работа задним числом запрещена. | |||
| 115
    
        orefkov 16.06.17✎ 13:22 | 
        (109)
 Какой смысл делать разные типы остатков, если задним числом документы не меняются? Они всегда одни, текущие. | |||
| 116
    
        Garykom гуру 16.06.17✎ 13:25 | 
        (115) Не разные а отдельные, постоянные остатки вместе хранятся и это вьюха, временные за текущий период, которые еще не перешли в постоянные отдельная вьюха.
 Полные текущие остатки это постоянные + временная дельта | |||
| 117
    
        orefkov 16.06.17✎ 13:30 | 
        (116)
 Что ты имеешь ввиду под "постоянные остатки"? Предпросчитанные промежуточные итоги по периоду что-ли? В системах, где работа задним числом исключена - остатки - это просто таблица, в которой записано текущее значение остатка. Там даже поле "период" не нужно. Товар, склад, количество, грубо говоря. Документ провели - запись в таблице изменили. Для отчетов считают по документом, можно регламентом с нужной периодичностью предпосчитать промежуточные итоги. Но это просто регламент, и если его не сделать - просто отчёт будет считать итог на дату дольше. Но никаких разных остатков нет. | |||
| 118
    
        Garykom гуру 16.06.17✎ 13:34 | 
        (117) В CouchDB view это не таблица (доступная пользователю на запись) а некие "итоги" доступные только на чтение.
 Фактически остатки чего то или обороты это и есть такие итоги, которые зависят от записанных документов. | |||
| 119
    
        Garykom гуру 16.06.17✎ 13:36 | 
        (118)+ В смысле не хочется изобретать нечто свое с хранением остатков в документе и вручную очень медленно с этим работать.
 Хотя параллельное чтение одного дока это вполне шустро, короче буду экспериментировать. | |||
| 120
    
        orefkov 16.06.17✎ 13:38 | 
        (118)
 А зачем это тебе, считать каждый раз всю сумму по документам? Записывай куда-то просто пару товар - остаток. Если по складам, то ключ будет "Товар/Склад", значение - "Остаток". Документ провели - прочитал ключ-значение, изменил значение остатка, записал обратно. | |||
| 121
    
        orefkov 16.06.17✎ 13:44 | 
        (119)
 А, понял, ты хочешь чудо-средство, что "я туда только движения пишу, а оно мне вжих, волшебным образом по движениям потом итоги выдавало". Тогда да, надо будет на десять сервером распаралеливавать, чтобы на-лету остатки считать. Вместо того, чтобы алгоритм хранения продумать, и тогда этой хваленой возможности считать параллельно просто не понадобится, ибо и считать то не надо. | |||
| 122
    
        orefkov 16.06.17✎ 13:49 | 
        +(121)
 Все думаете, что в NoSql какая-то магия есть. Нет там ничего, обычное хранилище ключ-значение, по-сути откат к старинной Berkley DB, в грамотной маркетинговой обёртке. Вся скорость только за счёт того, что всю базу данных в оперативку засасывает. Ну так можно и sqlite в memory затянуть - там такая скорость будет, закачаешься. | |||
| 123
    
        orefkov 16.06.17✎ 13:54 | 
        +(122) *Berkeley DB*     | |||
| 124
    
        Garykom гуру 16.06.17✎ 14:04 | 
        (121) (122) Чудо-средство это обычная видяха с GPU ))
 Догадайся что будет от распараллеливания? | |||
| 125
    
        orefkov 16.06.17✎ 14:49 | 
        (124)
 Тут должна быть картинка с Джеки Чаном, хватающимся за голову Затем картинка facepalm.jpg Насчёт Лаврова - не знаю, может быть, не хочу никого обижать. | |||
| 126
    
        Garykom гуру 16.06.17✎ 14:57 | 
        (125) Глянь ссылки из Ускорение СУБД с помощью GPU и CUDA, сча еще Map-D появилась
 http://www.nvidia.ru/object/blog-big-data-gpu-database-ru.html GPUDB это дело ближайшего будущего, фишка что обычные реляционные плохо работают исключая случаи сложных запросов, много простых смысла нет. А вот NoSQL это тема на GPU! | |||
| 127
    
        Fragster гуру 16.06.17✎ 14:58 | 
        (120) только коучдб и прочие носкули так не работают, и по этому оперативных остатков там не бывает     | |||
| 128
    
        Garykom гуру 16.06.17✎ 14:58 | ||||
| 129
    
        Garykom гуру 16.06.17✎ 14:59 | 
        (127) Если сделать очень-очень быстрый "подсчет остатков" то будет казаться что они вполне оперативные.     | |||
| 130
    
        Вафель 16.06.17✎ 15:04 | 
        (126) в 2013 году. И где они сейчас?     | |||
| 131
    
        Garykom гуру 16.06.17✎ 15:10 | 
        (130) Тут https://www.mapd.com/     | |||
| 132
    
        Fragster гуру 16.06.17✎ 15:11 | 
        (131) подожди. это реляционка. и без кластера.     | |||
| 133
    
        orefkov 16.06.17✎ 15:12 | 
        (126)
 Это "ускорение ради ускорения". Тому, у кого в руках молоток, всё вокруг кажется похожим на гвозди. Твое поведение напоминает неофитов, только что узнавших какую-ту хрень, и носящихся с ней, как с писаной торбой, пытаясь приткнуть её где надо и не надо. Так вот в этой задаче - не надо. Она прекрасно решается простыми и понятными структурами хранения данных, без всякого топового железа и параллельных алгоритмов. Вместо того, чтобы тупо при фиксации факта посчитать остаток и ЗАПИСАТЬ посчитанное, ты предлагаешь каждый раз загружать на видеокарту весь массив документов и считать всё сначала? В чём профит? В том, что ты вместо избавляешься от одной лишней записи в момент проведения? Но ради этого придётся городить целый огород с параллельными расчётами, точно также организовывать запись промежуточных итогов для ускорения, да еще и думать, как это всё синхронизировать? На мой взгляд, крайне сомнительная выгода. | |||
| 134
    
        Fragster гуру 16.06.17✎ 15:13 | 
        (133) после (132) вообще интересно, как автор гуглит...     | |||
| 135
    
        Garykom гуру 16.06.17✎ 15:13 | 
        (132) Угу самый идиотизм это пытаться делать виртуальную реляционку и эмуляцию sql на gpu.
 Когда там самое то для NoSQL баз, прям просятся. | |||
| 136
    
        orefkov 16.06.17✎ 15:14 | 
        (127)
 Что значит "NoSql так не работают?" Они не разрешают мне хранить в базе то, что я захочу? Зачем они тогда мне? | |||
| 137
    
        Fragster гуру 16.06.17✎ 15:14 | 
        господи, да параллельный тэйбл скан там...     | |||
| 138
    
        Garykom гуру 16.06.17✎ 15:14 | 
        (134) Блин это просто примеры реальных "реляционных" баз данных "ускоренных" на GPU.
 Если на GPU запускать NoSQL базы с MapReduce выигрыш в скорости будет просто офигительный! | |||
| 139
    
        Fragster гуру 16.06.17✎ 15:14 | 
        из-за кучи ядер и наличия всего в оперативе получается быстро...     | |||
| 140
    
        Garykom гуру 16.06.17✎ 15:16 | 
        (133) >Вместо того, чтобы тупо при фиксации факта посчитать остаток и ЗАПИСАТЬ посчитанное, ты предлагаешь каждый раз загружать на видеокарту весь массив документов и считать всё сначала? 
 Если внимательно прочитаешь вопрос в (0) то поймешь что как раз хочу этого избежать. | |||
| 141
    
        Fragster гуру 16.06.17✎ 15:16 | 
        вообще стандартные физические sql операторы параллелятся очень хорошо, проблема всегда в блокировках. nosql как раз "избавились от блокировок" путем отказа от оперативности. но и в sql также это есть, версионный режим, когда если запросу не принципиаольно - возвращается предыдущее зафиксированное состояние.     | |||
| 142
    
        Fragster гуру 16.06.17✎ 15:16 | 
        nosql - это реально не для бизнеса, это лайки считать.     | |||
| 143
    
        Garykom гуру 16.06.17✎ 15:18 | 
        Блин как обычно отклонились от темы и вместо "как это сделать" начинаем "нафига это делать" ))
 Короче на данный момент меня не сильно волнует вопрос ускорения на GPU, это дело пока будущего. Сейчас просто пытаюсь переложить конфу 1С на NoSQL (конкретно CouchDB) БД и все. | |||
| 144
    
        orefkov 16.06.17✎ 15:19 | 
        (138)
 Тебе пытаются втолковать, что задача подсчета остатков не требует mapreduce. (140) Тогда тоже не вижу плюсов от замены на NoSql. Ты в итоге придешь к такой же структуре хранения данных, что и в реляционной базе, только на самодельных костылях. Закат солнца вручную через key-value pairs получится. | |||
| 145
    
        Garykom гуру 16.06.17✎ 15:22 | 
        (144) А те кто пытаются это втолковать хотя бы VIEW в классических SQL серверах/бд используют?
 Суть не 1С учетных систем тех же SAP'ов и прочих OEBS/Axapta как раз в полноценном использовании возможностей SQL сервера. Я же просто пытаюсь использовать полноценно возможности NoSQL сервера. | |||
| 146
    
        Garykom гуру 16.06.17✎ 15:23 | 
        (144) Плюсы есть, и в принципе проблема уже решена еще на 1-й странице и без всяческих "тех же структур".     | |||
| 147
    
        orefkov 16.06.17✎ 15:24 | 
        Вообще, обычно обсуждение NoSql идёт по одному сценарию:
 - Йоу, смотрите как быстро я в неё документ пишу и извлекаю! - А выберите ка мне всех клиентов, купивших одеколон за месяц на сумму более 10 тыр. - Ээээ, а зато тут можно всё параллельно | |||
| 148
    
        Garykom гуру 16.06.17✎ 15:25 | 
        (147) Скажи вот у тебя 100 пользователей одновременно запустили отчет который "выберите ка мне всех клиентов, купивших одеколон за месяц на сумму более 10 тыр. "
 Что будет? И что будет в NoSQL ? | |||
| 149
    
        Garykom гуру 16.06.17✎ 15:28 | 
        И да я совсем не против обычного SQL, совсем не собираюсь от него отказываться и не призываю это делать других.
 Суть применять NoSQL в тех задачах где он лучше работает. Не выйдет чисто на CouchDB ну заюзаю Posgtres для актуальных остатков, где будут чисто ссылки-гуиды на доки, а сами доки буду в NoSQL хранить. | |||
| 150
    
        Garykom гуру 16.06.17✎ 15:29 | 
        (149) *Postgres     | |||
| 151
    
        orefkov 16.06.17✎ 15:31 | 
        (148)
 Для начала окажется, что клиент не входит в ключ по документам. Потом окажется что вообще, клиент записывается просто строкой в данных документа. И т.д и т.п. Короче, решить можно, но надо неделю на программирование и десять серверов в параллель. Только и всего. Если ты будешь говорить, что у тебя и документы по клиенту индексированы, и они отдельной сущностью сделаны, с включением в документ только ссылки - то чем это в итоге отличается от SQL баз? SQL базы - это по сути надстройка над key-value хранилищами, и всё, что можно сделать на NoSql - точно так же можно сделать и в реляционной базе. | |||
| 152
    
        Garykom гуру 16.06.17✎ 15:33 | 
        (151) Документы да отдельная сущность, вот их содержимое нет, внутри.     | |||
| 153
    
        orefkov 16.06.17✎ 15:36 | 
        (152)
 То есть чтобы отобрать все доки по конкретному клиенту нужно все доки перебрать? | |||
| 154
    
        Fragster гуру 16.06.17✎ 15:37 | 
        (153) параллельно!!!111одиодин в кластере!!!одинодин     | |||
| 155
    
        Garykom гуру 16.06.17✎ 15:38 | 
        (153) Не нужно, они уже все заранее отобраны и сложены во view.
 (154) Очень смешно... | |||
| 156
    
        Garykom гуру 16.06.17✎ 15:40 | 
        Прикольно когда  | |||
| 157
    
        drumandbass 16.06.17✎ 15:42 | 
        (0) я тут маленькую базку писал, с sqlite уткнулся в транзакции параллельно записать не получается. Открыто соединение должно быть только в 1 месте и если идет команда sql происходит блокировка. 
 Короче перевел на MS SQL LocalDB Зачем велосипед изобретать.. NoSQL только для хранения документов,картотек, не для вычислений и тем более уж параллельных. | |||
| 158
    
        Fragster гуру 16.06.17✎ 15:42 | 
        (155) да понятно, что по факту создается еще одна табличка по типу олапа, в которую демоны складывают периодически данные. эта периодичность в общем случае непрогнозируема. место, занимаемое данными - растет прямо пропорционально основным табличкам и в геометрической прогрессии по количеству разрезов информации.     | |||
| 159
    
        Garykom гуру 16.06.17✎ 15:46 | 
        (158) Угадал, но "код демона" пишется на том же языке что и и сама система ))     | |||
| 160
    
        orefkov 16.06.17✎ 15:48 | 
        (159)
 Это я как-раз и называю - "закат солнца вручную на костылях вокруг key-value pairs". | |||
| 161
    
        Garykom гуру 16.06.17✎ 15:49 | 
        (160) Главную фишку знаешь? "Программисту" не обязательно будет нуна учить SQL ))     | |||
| 162
    
        Вафель 16.06.17✎ 15:53 | 
        (161) не уж то это так сложно?     | |||
| 163
    
        Вафель 16.06.17✎ 15:54 | 
        (162)  не ужто какой нибудь LINQ проще чем селект на обычном SQL?     | |||
| 164
    
        orefkov 16.06.17✎ 15:55 | 
        (157)
 В sqlite в один момент может писать только один писатель, блокируется вся база. Хотя, если для записи использовать только один процесс, которому другие шлют запросы на запись, и включить WAL - он пишет с охренительной скоростью. На своей машинке Corei5 3.2GHz с SATA винтом делал тест - начать транзакцию, записать десять строк в таблицу с тремя полями, зафиксировать транзакцию - в среднем 70000 транзакций в секунду. Периодически, когда скидывало кэш на диск, падало до 3000 транзакций в секунду. При этом в WAL режиме записывающие не мешают читающим нисколько, то есть запросы других клиентов на чтение выполнялись во время транзакций записи. | |||
| 165
    
        Fragster гуру 16.06.17✎ 15:57 |   | |||
| 166
    
        Fragster гуру 16.06.17✎ 15:58 |   | |||
| 167
    
        Garykom гуру 16.06.17✎ 15:58 | 
        (162) (163) Никаких LINQ'ов обычный JavaScript код.     | |||
| 168
    
        Fragster гуру 16.06.17✎ 15:59 |   | |||
| 169
    
        Fragster гуру 16.06.17✎ 16:00 |   | |||
| 170
    
        Fragster гуру 16.06.17✎ 16:01 | 
        ну и к вопросу о сложности...
   | |||
| 171
    
        Garykom гуру 16.06.17✎ 16:01 | 
        (165) Блин я им про фому а они мне про ерёму...
 Не считайте меня дурным и не знающим про "индексы". Никакой "индекс" не поможет когда у вас данные новые колбасят и тут же хотят видеть остатки, пускай и не совсем актуальные но быстро-быстро, еще быстрее... И если тыщщи юзеров в одной базе. | |||
| 172
    
        Garykom гуру 16.06.17✎ 16:05 | 
        (170) (170) Эээ к вопросу о сложности а кто понял что справа вообще то много независимых штук?
 1. есть функция MAP 2. есть функция REDUCE которая работает по результатам MAP но ей глубоко пофиг что там внутри, лишь бы структуру получить верную по полям 3. есть финализе которому тоже пофиг что там ранее 4. ну и фильтр на входе который можно менять не трогая функции! | |||
| 173
    
        Garykom гуру 16.06.17✎ 16:06 | 
        (172)+ Короче любую часть можно независимо переписать (это разные модули и они выполняются независимо и даже на разных нодах) и оно будет работать!!!
 А терь попробуйте исправить запросик SQL... | |||
| 174
    
        Вафель 16.06.17✎ 16:08 | 
        (173) У тебя js головного мозга. Как у одного товарища с .net     | |||
| 175
    
        Garykom гуру 16.06.17✎ 16:11 | 
        (174) Инструмент/технологию товарища с .Net вполне успешно использую. А вы?     | |||
| 176
    
        lock19 16.06.17✎ 16:12 | 
        (175) А нам-то зачем?     | |||
| 177
    
        Fragster гуру 16.06.17✎ 16:12 | 
        (173) по факту, то же самое можно сделать и со скулем в виде
 mysql.query("select dim1,dim2").then((queryresult)=>{ result = queryresult.filter(/*тут то, что в where*/).map(/* тут преобразования полей из select*/).reduce(/* тут аггрегация*/).filter(/*тут фильтр having*/); return resolve(result)}); и никакой большой заслуги именно nosql движка тут нет. при этом map и filter параллелятся и так. reduce по сути своей однопоточен, так что преимуществ никаких у nosql нет | |||
| 178
    
        Fragster гуру 16.06.17✎ 16:15 | 
        не, когда я изучал js и дошел там до методов массива - я в очередной раз пожалел, что в 1с нет лямбд, да. но наличие map/reduce никак нельзя признавать "киллер фичей"     | |||
| 179
    
        orefkov 16.06.17✎ 16:16 | 
        (157)
 sqlite - это кстати не NoSql. Это самая натуральная встраиваемая реляционная БД. | |||
| 180
    
        Fragster гуру 16.06.17✎ 16:18 | 
        тем более, что далеко не факт, что map и reduce функции исполняются сервером субд, а не клиентским приложением ;)     | |||
| 181
    
        Garykom гуру 16.06.17✎ 16:19 | 
        (176) Действительно "а зачем?"
 (177) У CouchDB из коробки отказоустойчивость кластера. Попробуй на SQL взять допустим 10 компов (без выделенного главного/сервера) и на них поднять шустро работающую учетную систему. Которая продолжает работать пока хотя бы один комп включен и ускоряет работу когда они назад включаются/добавляются. | |||
| 182
    
        Garykom гуру 16.06.17✎ 16:21 | 
        (181)+ Суть что то что 1С получается путем написания сервера 1С с разворачиванием кластера и т.д. тут все работает из коробки на "бесплатных" технологиях.
 Короче для неких ниш решение вполне оптимальное и наилучшее. Представьте кассы которые без сервера шустро-шустро пашут без тормозов. | |||
| 183
    
        lock19 16.06.17✎ 16:21 | 
        (181) Вот.     | |||
| 184
    
        Garykom гуру 16.06.17✎ 16:22 | 
        (183) "Вам" не зачем )) Зачем мне это моя дело )))     | |||
| 185
    
        orefkov 16.06.17✎ 16:24 | 
        (181)
 Даже не знаю, как еще объяснить. Ты пытаешься оправдать вещь возможностью самой вещи, не пытаясь подумать, а ценна ли эта возможность сама по себе? Что например, если сделать традиционную бд с грамотно организованным хранилищем, то сама необходимость в кластере из десяти серверов отпадёт? Ты же не знаешь, как внутри их кластер реализован? Поэтому, допустим, чем он отличается от десятка серверов с MS-SQL с настроенной авто-репликацией - не сможешь объяснить? | |||
| 186
    
        orefkov 16.06.17✎ 16:26 | 
        (182)
 У меня на работе кассы шустро-шустро пашут без тормозов. Без NoSql и кластеров. На sqlite :) | |||
| 187
    
        Garykom гуру 16.06.17✎ 16:32 | 
        (186) И скажи если взять сначала пробить на всех кассах а потом через пару минут все кроме одной вырубить, одна оставшаяся будет сообщать о продажах всех остальных?
 Тут это "из коробки". | |||
| 188
    
        Garykom гуру 16.06.17✎ 16:32 | 
        (187)+ Отдельного сервера кроме касс нету     | |||
| 189
    
        lock19 16.06.17✎ 16:35 | 
        (187) Ты хочешь базу между клиентами распределять?     | |||
| 190
    
        orefkov 16.06.17✎ 16:36 | 
        Ты немного не понимаешь требования к кассам. Она не должна отчитываться за других. Она должна человеку чек пробить, даже если сеть пропала. А когда сеть есть, скинуть продажу в учётную систему. Или у тебя это магия и при отсутствии сети работает? Через астрал?     | |||
| 191
    
        Fragster гуру 16.06.17✎ 16:36 | 
        (187) ну потеряются часть транзакций, да и буй с ним, да...     | |||
| 192
    
        lock19 16.06.17✎ 16:37 | 
        "оставшаяся будет сообщать о продажах" - в этом месте предвидится затык     | |||
| 193
    
        orefkov 16.06.17✎ 16:38 | 
        (189)
 Ага. Всю базу всех продаж реплицировать на каждую кассу. Понял, да. На каждой кассе поставим Xeon + 128Gb RAM + 1TB винт :) | |||
| 194
    
        Garykom гуру 16.06.17✎ 16:41 | 
        "В качестве домашнего задания можете провести такой эксперимент. Уроните одну ноду. Убедитесь, что документ можно обновить, используя только оставшиеся две ноды. Затем поднимите упавшую ноду и быстро-быстро запросите с нее документ. Убедитесь, что никакого конфликта не происходит и вы получаете последнюю ревизию."
 http://eax.me/couchdb/ Это если кто по английски не может | |||
| 195
    
        orefkov 16.06.17✎ 16:41 | 
        +(193)
 А, еще крутой GPU нужен, обязательно. Будет остатки в паралель считать. А когда затишье, кассир в думчик поиграет :) | |||
| 196
    
        Garykom гуру 16.06.17✎ 16:43 | 
        (193) 4 а лучше 16 Gb RAM хватит за глаза
 https://developer.couchbase.com/documentation/server/current/install/pre-install.html | |||
| 197
    
        lock19 16.06.17✎ 16:43 | 
        (194) Это всё хорошо. Ноды у тебя где будут?     | |||
| 198
    
        Garykom гуру 16.06.17✎ 16:46 | 
        (197) на планшетах/мобильных кассах     | |||
| 199
    
        Fragster гуру 16.06.17✎ 16:46 | 
        (194) для одного документа и локальной сети - предполагаю, что время синхронизации пренебрежимо мало.
 а теперь представь ситуацию нарушения связности между нодами вместо падения, с одновременным исправлением одних данных в двух нодах. или когда канал между нодами - не 1гбит сеть, да и данных с сотню мегабайт накопилось | |||
| 200
    
        Garykom гуру 16.06.17✎ 16:46 | 
        (198)+ и еще на ТСД по складу бегать... и стоять на десктопах менагеров     | |||
| 201
    
        Вафель 16.06.17✎ 16:47 | 
        (196) На каждую кассу по 16 гиг?     | |||
| 202
    
        Fragster гуру 16.06.17✎ 16:47 | 
        сферические примеры кластеров в вакууме часто разбиваются о реальность каналов связи     | |||
| 203
    
        Вафель 16.06.17✎ 16:48 | 
        И на ТСД держать реплику все базы????     | |||
| 204
    
        Garykom гуру 16.06.17✎ 16:48 | 
        (199) Сетка не локалка между нодами даже не рассматриваю пока, при плохих каналах согласен что синхронизация будет очень долгой.
 Блин мне нужна некая технология, я ее нашел и пытаюсь заюзать как нуна. Так как 1С без плясок с бубнами и разного программного шаманства не позволяет. | |||
| 205
    
        Garykom гуру 16.06.17✎ 16:49 | 
        (203) Шутки сча понимать надо, в будущем это будет не шутка     | |||
| 206
    
        Fragster гуру 16.06.17✎ 16:49 | 
        (204) получение оперативных данных - это не "как нуна"     | |||
| 207
    
        Garykom гуру 16.06.17✎ 16:50 | 
        (206) Если мы знаем что "вот эти данные не оперативные" то легко можем подождать или сделать спецзапрос оперативных.     | |||
| 208
    
        Вафель 16.06.17✎ 16:50 | 
        (204) Ну чтож дерзай, как сделаешь расскажешь     | |||
| 209
    
        Garykom гуру 16.06.17✎ 16:51 | 
        У меня такое подозрение что адепты FTP спорят с любителем торрентов...     | |||
| 210
    
        lock19 16.06.17✎ 16:51 | 
        В теме слишком мало блокчейнов...     | |||
| 211
    
        Fragster гуру 16.06.17✎ 16:52 | 
        (210) ты сделал мой день!     | |||
| 212
    
        Вафель 16.06.17✎ 16:52 | 
        (209) Только вот по фтп каждый берет ровно свой файлик в 100к, а через торренты вся база мигрирует в 100г     | |||
| 213
    
        Garykom гуру 16.06.17✎ 16:53 | 
        (210) (211) шшш тут нельзя про это...     | |||
| 214
    
        Fragster гуру 16.06.17✎ 16:53 | 
        (207) а как ты поймешь, что данные не оперативные при нарушении связности?     | |||
| 215
    
        Garykom гуру 16.06.17✎ 16:53 | 
        (212) Странно... почему я через торренты беру (и раздаю) только тот файлик хоть пару байт (на самом деле захватываю и соседние ибо блоки) а?     | |||
| 216
    
        Fragster гуру 16.06.17✎ 16:59 | 
        (215) да нет, при запросе select from where ты получишь только нужные тебе данные, при репликации - ты вынужден получить все + постоянно отслеживать изменения. это на самом деле большая проблема. например при попытке изменить одновременно документ в двух местах, когда тебе пофиг, все хорошо, а вот "объект уже захвачен для редактирования" когда не пофиг, уже не получится.     | |||
| 217
    
        Garykom гуру 16.06.17✎ 17:05 | 
        (214) Там немного интереснее и проще есть встроенный механизма разрешения конфликтов с сохранением конфликтующих копий
 http://guide.couchdb.org/draft/conflicts.html | |||
| 218
    
        Garykom гуру 16.06.17✎ 17:12 | 
        (217)+ И да нарушение связности так же легко определяется и можно это вручную отработать уже.
 Но блин это полезли в моменты которые пока даже не думал, мне бы пока просто падение 1-2 серверов исключить. Кстати! Там же через http прокси обращение к CouchDB работает, короче что кластер развалится на несколько "работающих" групп нод маловероятно. Суть что да можно настроить напрямую на ноды связь, а можно через прокси который нагрузку между нодами разруливает | |||
| 219
    
        Fragster гуру 16.06.17✎ 17:19 | 
        (218) ну так тогда нафиг этот "кластер", если прокся упадет?     | |||
| 220
    
        Garykom гуру 16.06.17✎ 17:22 | 
        (219) проксю легко и на лету поменять же прямо из клиента     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |