База и последовательность



  • Добрый день.
    Необходимо писать в базу и в той же последовательности забирать строки. В интерфейсе, в менеджере данных все строки отображаются последовательно как и были туда внесены. Но если забирать в скрипте, что через ресурсы, что через "Получить Записи" в базе данных, то строки отдает не последовательно.
    Я внес в базу последовательно 2 раза подряд цифры от 1 до 20, вот в какой последовательности мне их отдает БАС:
    0_1527154252338_upload-427ffcd2-b532-4b28-8cfc-37c3491daab1 "1:1:1:5b0674ab38ed93ec0e80fa5f",
    "3:3:3:5b0674ab38ed93ec0e80fa61",
    "6:6:6:5b0674ac38ed93ec0e80fa64",
    "2:2:2:5b0674ab38ed93ec0e80fa60",
    "5:5:5:5b0674ac38ed93ec0e80fa63",
    "4:4:4:5b0674ac38ed93ec0e80fa62",
    "20:20:20:5b06747b38ed93ec0e80fa5e",
    "19:19:19:5b06747a38ed93ec0e80fa5d",
    "18:18:18:5b06747a38ed93ec0e80fa5c",
    "17:17:17:5b06747a38ed93ec0e80fa5b",
    "16:16:16:5b06747a38ed93ec0e80fa5a",
    "15:15:15:5b06747a38ed93ec0e80fa59",
    "14:14:14:5b06747a38ed93ec0e80fa58",
    "13:13:13:5b06747a38ed93ec0e80fa57",
    "12:12:12:5b06747938ed93ec0e80fa56",
    "11:11:11:5b06747938ed93ec0e80fa55",
    "10:10:10:5b06747938ed93ec0e80fa54",
    "9:9:9:5b06747938ed93ec0e80fa53",
    "8:8:8:5b06747938ed93ec0e80fa52",
    "7:7:7:5b06747938ed93ec0e80fa51",
    "6:6:6:5b06747938ed93ec0e80fa50",
    "5:5:5:5b06747938ed93ec0e80fa4f",
    "4:4:4:5b06747838ed93ec0e80fa4e",
    "3:3:3:5b06747838ed93ec0e80fa4d",
    "2:2:2:5b06747838ed93ec0e80fa4c",
    "1:1:1:5b06747838ed93ec0e80fa4b",
    "7:7:7:5b0674ac38ed93ec0e80fa65",
    "8:8:8:5b0674ac38ed93ec0e80fa66",
    "9:9:9:5b0674ac38ed93ec0e80fa67",
    "10:10:10:5b0674ac38ed93ec0e80fa68",
    "11:11:11:5b0674ac38ed93ec0e80fa69",
    "12:12:12:5b0674ad38ed93ec0e80fa6a",
    "13:13:13:5b0674ad38ed93ec0e80fa6b",
    "14:14:14:5b0674ad38ed93ec0e80fa6c",
    "15:15:15:5b0674ad38ed93ec0e80fa6d",
    "16:16:16:5b0674ad38ed93ec0e80fa6e",
    "17:17:17:5b0674ad38ed93ec0e80fa6f",
    "18:18:18:5b0674ad38ed93ec0e80fa70",
    "19:19:19:5b0674ad38ed93ec0e80fa71",
    "20:20:20:5b0674ae38ed93ec0e80fa72",

    Почему-то при выдаче он их сортирует по идентификатору. Может возможно как-то забирать строки в той же последовательности, что они и вносились?

    Да и вообще странно что с таким хорошим инструментом как база, такой ограниченный функционал. Работая через ресурс и внося изменения в базу, в ресурсе этих изменений не будет до перезагрузки ресурса, но в этом случае мы опять начинаем брать с первой строки. Нельзя удалить текущую строку ресурса из базы ну и т.д. Вот бы базе такой же функционал как у списка.



  • @Forgevalt Да на самом деле функционала достаточно для большинства задач, а если нет то можно использовать внешнюю БД подключив ее через node.js. У вас возможно просто выбран не самый оптимальный путь для решения вашей задачи.



  • @Forgevalt
    после подключения к проекту базы появляются экшены для работы с базой
    база через ресурс мне вообще не понравилась, из за 10 000
    я перебираю базу страница инкремент, размер страницы один, до тех пор пока не вернет ''



  • Ясно, спасибо за комментарии. А нет ли возможности писать и брать строки из .csv файлов? Это было бы удобно и решило бы все мои проблемы.



  • @Forgevalt формат csv это формат текстового файла, значения в котором как правило разделятся запятыми. Бас может читать и писать в текстовые файлы.


  • administrators

    @forgevalt

    Обновил модуль для работы с базой.

    • По умолчанию действие "Получить Записи" получает записи в том же порядке, в котором они были добавлены.
    • В действии "Получить Записи" появилась возможность сортировки.
    • Появилось апи для взаимодействия с группами, их можно создавать, редактировать, удалять, копировать и получать список групп.
    • Записи можно переместить или скопировать в другую группу.
    • Можно создавать ссылки на записи. Изменения одном месте изменит и все другие записи созданные с помощью ссылок.
    • Новые действия для массового изменения и массового удаления записей.
    • В дополнение к обычным фильтрам теперь можно фильтровать по группам.
    • Все действия, которые меняют состояние базы теперь содержат настройки для синхронизации с ресурсами. В отличии от действия "Перезагрузить Ресурс", данные настройки не изменяют количество упехов и неудач в ресурсе и работают быстрее.
    • Новое действие для подсчета количества записей.
    • Все новые и старые действия по работе с базой теперь имеют детальную документацию.

    0_1528892674212_DatabaseModule.png


    0_1528892681773_DataabseSelectRecord.png

    Надеюсь, что теперь работать с базой в БАС будет приятней.



  • @support

    • очень не хватало множественной вставки, хотя как оказалось это не существенно, но было бы удобнее

    • еще больше не хватает быстрого способа проверки "есть ли такая запись" или вставить запись "если такой записи нет"

    var base = _db_select_records( [ COLUMN,"StringContains","что_то_ищем" ], 1,1,TABLE);
    if(base == 0){
        _db_add_record(group, [COLUMN,"что_то_не_нашли",COLUMN1,"true"], TABLE)
    }
    

    работает не работает если потоко больше 200-300

    еще бы чтото быстрое для

    var base = _db_select_records( [ COLUMN,"StringContains","что_то_ищем" ], 1,1,TABLE);
    if(base == 0){
        _db_add_record(group, [COLUMN,"что_то_не_нашли",COLUMN1,"true"], TABLE)
    }else{
        _db_update_record(record, [COLUMN,"что_то_нашли",COLUMN1,"true"], TABLE)
    }
    


  • а как получить это обновление?



  • @godsgifts Ждать :D


  • administrators

    @ruzne

    очень не хватало множественной вставки, хотя как оказалось это не существенно, но было бы удобнее

    Пока ее нет, но вставка по одной тоже достаточно быстрая.

    еще больше не хватает быстрого способа проверки "есть ли такая запись" или вставить запись "если такой записи нет"

    Сейчас можно использовать действие "Количество записей"



  • @support
    еще один вопрос по базе
    допустим в базу было добавлено внимание 44 записи. позже они изменялись разными скриптами. Теперь я попытался обработать все 44 записи получить записи 1000 штук. обрабатываю но не 44 а 28, проверяю сколько записей получено из базы 28, а не 44. Ладно, ресурс-база, отчет о ресурсе - 28.
    0_1528989929132_й.png
    В менеджере данных вот так, поясняю: в таблице 44 записи, но только в 28 есть данные.
    Все пропало.
    делаю импорт в ЦСВ, получаю 44 строки все данные на месте.
    я думаю решение для меня пересоздать базу, хорошо все что нужно у меня осталось.

    и вот еще как, устанавливаю в менеджере данных фильтр по одному из полей со значением от записи которая как бы пропала, эта запись находится и отображается.
    как так?
    о себе: однажды я сломал стрелу у дежурного танка


  • administrators

    @ruzne said in База и последовательность:

    В менеджере данных вот так, поясняю: в таблице 44 записи, но только в 28 есть данные.

    Как могут быть записи без данных?

    проверяю сколько записей получено из базы 28

    Чем получаете записи?



  • @support said in База и последовательность:

    Как могут быть записи без данных?

    как на скриншоте, пустые строки

    @support said in База и последовательность:

    Чем получаете записи?

    вначале, получить записи первую страницу длинной 1000 без фильтров, второй раз через ресурс

    добавлю, база используется в нескольких проектах, схема базы в разных проектах разная, множество раз менялась, таблиц много, в том числе довольно больших, еще была с базой, писал ранее, что попало для полей с датой, и получить записи неправильно работают фильтры



  • Тоже у одного клиента такая ситуация.
    Со временем количество записей в базе при получении через ресурс уменьшается.
    В скрипте используется удалить текущий елемент для ресурса, без галочек.
    Причем после перезапуска все так же.
    Например, было 6к записей (аккаунты). Они используются через ресурс.
    В процессе работы ресурс удаляется, без галочек. Осталось допустим 2к записей.
    После перезапуска в отчете о ресурсах, а так же длина всего ресурса возвращает 2к, хотя в редакторе базы видно что из 6к.

    Пытался повторить сам, не получилось.