| 
    
            
         
         | 
    
  | 
Как дешевле забрать данные из SQLite ? | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        acvant    
     10.05.20 
            ✎
    08:01 
 | 
         
        Привет, селяне!
 
        Есть оперативная табличка в SQLite на 15-20 строк, с 10-12 параметрами. Данные по строкам обновляются 1-3 раза в секунду. БД подключена к клиентскому ODBC. Каким методом выгоднее (ресурсы/скорость/etc.) получать данные в 1С: 1. Через внешний источник данных? 2. Через ADO (COM) запросами? 3. Через ВК (забираем, строим логику в ВК, в 1С толкаем по необходимости)? Не хотелось бы проходить путь, который кто-то, возможно, уже прошел... Заранее спасибо!  | 
|||
| 
    1
    
        Кирпич    
     10.05.20 
            ✎
    09:23 
 | 
         
        Через http     
         | 
|||
| 
    2
    
        Кирпич    
     10.05.20 
            ✎
    09:27 
 | 
         
        И sqlite можно выкинуть. Чо без бд 20 строчек нельзя хранить никак что ли. Если совсем дикий, то через внешний источник.     
         | 
|||
| 
    3
    
        acvant    
     10.05.20 
            ✎
    09:35 
 | 
         
        (2) Входные условия видишь? База SQLite, подключена через пользовательский ODBC, или ты КИРПИЧ по жизни??? Есть то, что есть. Я тебя не просил оценку структуры давать, а как из этого проще выкрутиться...     
         | 
|||
| 
    4
    
        Вафель    
     10.05.20 
            ✎
    09:41 
 | 
         
        а не булет ли блокирующего чтения?     
         | 
|||
| 
    5
    
        Кирпич    
     10.05.20 
            ✎
    09:57 
 | 
         
        (3) Не, я просто Кирпич, а вот ты по жизни. Нарисовал коня для телепатов и ждет адекватных ответов.     
         | 
|||
| 
    6
    
        acvant    
     10.05.20 
            ✎
    09:59 
 | 
         
        (5) А что я не так нарисовал? Обоснуй? Есть вводная, есть вопрос. Если ты не в теме освободи пространство... Нех лезти, с твоим чистым потоком сознания.     
         | 
|||
| 
    7
    
        acvant    
     10.05.20 
            ✎
    10:01 
 | 
         
        (4) Ну на чтении не блокируется, если ты имеешь ввиду ADO-ODBC, там и на записи нет блокировки.     
         | 
|||
| 
    8
    
        ДенисЧ    
     10.05.20 
            ✎
    10:09 
 | 
         
        (7) "на чтении не блокируется"
 
        Расскажи это 1су с их эр в скулайте ))  | 
|||
| 
    9
    
        Кирпич    
     10.05.20 
            ✎
    10:11 
 | 
         
        Да пофиг блокировка. Читатель подождеь рару миллисекунд. Ничо страшного     
         | 
|||
| 
    10
    
        Garykom    
     гуру 
    10.05.20 
            ✎
    10:15 
 | 
         
        (0) Данные в 1С нужны на клиенте или на сервере?
 
        Если на клиенте то ВК с внешнее событие, если на сервере то веб-сервис в 1С поднимать и нечто внешнее пусть дергает.  | 
|||
| 
    11
    
        acht    
     10.05.20 
            ✎
    10:15 
 | 
         
        (6) О, деревня с бодуна выползла, после вчерашнего. Селян своих ищет. Вчера, наверно, хорошо было.     
         | 
|||
| 
    12
    
        Aleksey    
     10.05.20 
            ✎
    10:15 
 | 
         
        (9) а писатель? Потом выясниться что программа не ожидает несанкционированного доступа и будет каждый раз при чтении из 1С крашиться     
         | 
|||
| 
    13
    
        Кирпич    
     10.05.20 
            ✎
    10:16 
 | 
         
        Если оба пишут, тогда плохо. Но пока не ясно из 1с туда будут писать или нет. Да и если будут тоже пофиг. Транзакция не долгая скорее всего.     
         | 
|||
| 
    14
    
        Aleksey    
     10.05.20 
            ✎
    10:17 
 | 
         
        Кто то же каждую секунду пишет в эту табличку     
         | 
|||
| 
    15
    
        acvant    
     10.05.20 
            ✎
    10:20 
 | 
         
        (8) (12) Тих, тих, это как так??? Если через ADO, то причем тут 1с?? Доступ то идет через драйвер SQLite3 ODBC driver. Что не так? Норумль работает и с блокировками, и с высокой нагрузкой. 1С только читает. Пишет прога на си от датчиков. Это данность, ее не сменить.     
         | 
|||
| 
    16
    
        acvant    
     10.05.20 
            ✎
    10:21 
 | 
         
        (11) Ну с тобой все понятно, чем дальще твой задрищенск, тем больше ты комплексуешь по этому поводу)))     
         | 
|||
| 
    17
    
        acvant    
     10.05.20 
            ✎
    10:23 
 | 
         
        (12) Подожди, как это крашиться??? А уровень изоляции и варианты блокировок кто-то отменил?     
         | 
|||
| 
    18
    
        Aleksey    
     10.05.20 
            ✎
    10:23 
 | 
         
        (15) в контексте вашего зоопарка и оборудование нельзя сказать какой вариант лучший. Более того при ваших небольших входных данных может оказаться что разница будет в районе стат.погрешности. Т.е. можно рассуждать о супер пупер способе, но у вас он невзлетит так как среда не подходящие (или версия SQLite). с другой стороны можно неделю потратит для написания оптимального способа что в конце прийти в мысли что тупо решая в лоб у нас будет сопоставимое время работы     
         | 
|||
| 
    19
    
        Aleksey    
     10.05.20 
            ✎
    10:23 
 | 
         
        (17) а ты уверен что драйвера датчика которые пишут туда это используют?     
         | 
|||
| 
    20
    
        Aleksey    
     10.05.20 
            ✎
    10:24 
 | 
         
        может они для скорения используют недокументированные фичи и в обход пишут напрямую     
         | 
|||
| 
    21
    
        acvant    
     10.05.20 
            ✎
    10:29 
 | 
         
        (20) Ну насколько я смотрель код на СИ, там все стандартно. Поднимают клиента ODBC и на  сервер(ODBC виндозовский) отправляют данные по протоколу. Драйвер лайтовский настраивается по блокировкам и изоляции уже в клиентском ODBC. Все просто. Мне хотелось бы узнать, что бы не переберать все варианты, каокй быстрее и дешевле по ресурсам. Из тех, что я написал в вопросе.     
         | 
|||
| 
    22
    
        acht    
     10.05.20 
            ✎
    10:29 
 | 
         
        (16) Вот поэтому у меня проблем-то со связкой SQLite и 1С не возникает. Ты сходи там в свою сельскую библиотеку, туда книжек и брошюрок уже завезли. С примерами, с описаниеми... Читать-то, вроде, умеешь. Попробуешь, втянешся.
 
        А выпытывать у тебя что значит "выгоднее" с твоей точки зрения никто не будет. Предложат тебе отдельный микросервис на GO, и колупайся. Вон, в (10) уже начали.  | 
|||
| 
    23
    
        Конструктор1С    
     10.05.20 
            ✎
    10:29 
 | 
         
        (0) юзай внешние источники данных     
         | 
|||
| 
    24
    
        Aleksey    
     10.05.20 
            ✎
    10:30 
 | 
         
        (21) ты правда думаю что выборка 10 строк это то на что строит тратить время в поисках выгоды?     
         | 
|||
| 
    25
    
        Aleksey    
     10.05.20 
            ✎
    10:31 
 | 
         
        Что лучше знаешь и гле быстрее напишешь то и выгоднее.
 
        Какая выгода потрить день в написании ВК, отлаживать его, если по скорости работы он будет сопоставим с ВИД?  | 
|||
| 
    26
    
        acht    
     10.05.20 
            ✎
    10:32 
 | 
         
        (24) А поговорить? (:     
         | 
|||
| 
    27
    
        acvant    
     10.05.20 
            ✎
    10:37 
 | 
         
        (26) Болтолог. Наверное ДЗЕН ведёшь? Гет лост бастэ. Твои детские комплексы и страхи в данном контексте не интересны...     
         | 
|||
| 
    28
    
        vde69    
     10.05.20 
            ✎
    10:38 
 | 
         
        (0) для начала обозначь приоритеты, что важнее 
 
        1. скорость записи или чтения 2. допустимо-ли потеря пакета при записи или черное чтение потом определи сколько потоков читает и записывает ну и на закуску дай примерное время на операцию записи и чтения после всего этого можно будет и советовать  | 
|||
| 
    29
    
        Aleksey    
     10.05.20 
            ✎
    10:40 
 | 
         
        По факту выясниться что данные нужно читать не чаше чем раз в час. И будет и читать 20мс или 5 секунд - не критично. И чтать будет не человек, а робот который по этим данным будет строить свои данные и отправлять на почту раз в сутки отчет     
         | 
|||
| 
    30
    
        acvant    
     10.05.20 
            ✎
    10:41 
 | 
         
        (28) Да, понятно это все. блин, все что я хотел узнать, может кто уже заморачивался, делал замеры. Вот помойка же большая, на все случаи жизни есть пример/опыт. Как все сделать и проверить, не вопрос. Да я и не задавал такой вопрос.     
         | 
|||
| 
    31
    
        acht    
     10.05.20 
            ✎
    10:43 
 | 
         
        (27) А порчу по фото накладываешь?     
         | 
|||
| 
    32
    
        Aleksey    
     10.05.20 
            ✎
    10:44 
 | 
         
        (30) как ты думаешь есть универсальный способ выборки любых данных и из любых источников с максимальной скоростью? 
 
        Где то кэширование позволяет ускорит получение результата в 10 раз, а где то затраты на кэширование превышают время выборки. и что тут советовать?  | 
|||
| 
    33
    
        vde69    
     10.05.20 
            ✎
    10:45 
 | 
         
        ну и еще - как я понял у тебя есть доступ к коду на с+ на котором написана приблуда которая пишет файл, на сколько я понял по количеству параметров никакая история данных в базе не хранится, от сюда очень простой вывод напрашивается, немного переписать прогу которая получает данные с датчиков и пишет данные в базу на COM сервер, и данные хранить исключительно в оперативке, а получать из 1с по COM (или DCOM+)
 
        На мой взгляд этот вариант не сложнее чем написать свою ВК для получения данных из базы  | 
|||
| 
    34
    
        acvant    
     10.05.20 
            ✎
    10:45 
 | 
         
        (30)Была бы у меня гибкость в архитектуре, я бы на С склепал шустрый ODBC сервер непосредственно под это дело и подменил его для клиента. А дальше дергал бы 1С при изменении параметра. Но там все глубже, структуру менять нельзя. Это самый низ ТАКОЙ ПАУТИНЫ...     
         | 
|||
| 
    35
    
        acht    
     10.05.20 
            ✎
    10:45 
 | 
         
        (30) > делал замеры.
 
        На твоей архитектуре и с твоим набором версий софта, ага.  | 
|||
| 
    36
    
        acvant    
     10.05.20 
            ✎
    10:47 
 | 
         
        (35) Успокойся болезный, сегодня тебе никто не подаст... Приходи вчера.     
         | 
|||
| 
    37
    
        acvant    
     10.05.20 
            ✎
    10:49 
 | 
         
        Ладно, понятно. Родаемся и умираем в одиночестве.)))
 
        А ты Acht работай над собой. Хреново выглядишь...  | 
|||
| 
    38
    
        vde69    
     10.05.20 
            ✎
    10:49 
 | 
         
        (30) ты зря так просто относишся к проблемме, вот я например всегда думал, что MySql транзакционная база, оказалась, что далеко не всегда, есть сборки (и они активно используются) где транзакции не поддерживаются...
 
        По этому вопрос с блокировками в твоем случае может встать совершенно неожиданным образом и привести или к потерям данных или еще к чему  | 
|||
| 
    39
    
        acht    
     10.05.20 
            ✎
    10:51 
 | 
         
        (33) И не забыть нарисовать отдельный "протокол обмена", учитывающий ситуации, когда одна из сторон еще не запущена/отвалилась...
 
        Вообще сейчас шины обмена модно - дописать приблуду, чтобы драйвер туда отсылал, а 1С вычитывала. Красота!  | 
|||
| 
    40
    
        acht    
     10.05.20 
            ✎
    10:52 
 | 
         
        (37) Обращайся, если что!     
         | 
|||
| 
    41
    
        acvant    
     10.05.20 
            ✎
    10:52 
 | 
         
        (38) Согласен, надо самому копать и конкретно "по месту". Ладно спасибо всем!!! Особенно колхознику ACHTу )))     
         | 
|||
| 
    42
    
        Кирпич    
     10.05.20 
            ✎
    13:12 
 | 
         
        Вот и закончилось очередное "объясните мне гению, что такое вилка и ложка, а то я вас дерьмом измажу"     
         | 
|||
| 
    43
    
        Сияющий в темноте    
     10.05.20 
            ✎
    16:09 
 | 
         
        Позвольте!
 
        SQLLite - это же встроенный в ODBC микросеовер,то есть два процесса к одной базе данных будут обращаться как к общему файлу!!! Поэтому,нужно очень внимательно смотреть,какие блокировки ставит пишущий процесс и ставит ли их вообще,так как иначе возможно все,что угодно,вплоть до доступа к неинициализированной памяти,если при записи размер таблиц поменяется. так что тут не быстрее нужно смотреть,а переписывать писателя или в нем же заводить поток ответа,чтобы в один файл писала одна программа.  | 
|||
| 
    44
    
        Вафель    
     10.05.20 
            ✎
    17:10 
 | 
         
        Пишущий блокирует чтение     
         | 
|||
| 
    45
    
        Вафель    
     10.05.20 
            ✎
    17:10 
 | 
         
        А читающий запись     
         | 
|||
| 
    46
    
        spock    
     10.05.20 
            ✎
    21:07 
 | 
         
        (0)Для SQLite конкуренция на запись (пишут по очереди), для остальных случаев все без конкуренции.
 
        Ставим sqliteodbc - http://www.ch-werner.de/sqliteodbc/ И лабаем на 1с код чтения через ADO или ВнешниеИсточникиДанных (выбираем СУБД = "MySQL")  | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |