powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Возможна ли такая выборка?
50 сообщений из 50, показаны все 2 страниц
Возможна ли такая выборка?
    #39615742
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почти пятничная тема. Экспериментирую. Есть табля
Код: sql
1.
2.
3.
4.
5.
6.
7.
CREATE TABLE TBL_TEST (
    ID        INTEGER NOT NULL,
    STR_FLD   VARCHAR(100) CHARACTER SET UTF8,
    INT_FLD   INTEGER,
    CURR_FLD  NUMERIC(15,4),
    DATE_FLD  TIMESTAMP DEFAULT current_timestamp
);


На клиенте (дабы избежать полного фетча) мне надо получить определенное кол-во записей так, чтобы запись с определенным ID визуально отображалась в середине выборки. Примерно так (ID=40)
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT
  FIRST :prmFirst -- 10
  SKIP :prmSkip --35
        ID,
       STR_FLD,
       INT_FLD,
       CURR_FLD,
       DATE_FLD
FROM TBL_TEST
ORDER BY 1


Данные на клиента фетчатся в n-заходов (в тесте в меморидатасет или VTV в доп.потоке), поэтому запрос может варьировать без ограничения фантазии (условно говоря, нужно получить запись по ID с 36 по 39 + 40 + с 41 по 45).

Хотел узнать, можно ли проделать то же самое, но если сортировка будет осуществляться по любому другому полю. Это возможно принципиально ? Или есть другой путь? Был бы благодарен за любые советы и конструктивную критику.

зы. тестовый скрипт приаатачил
=================
Док.

Win7 Ultim x64/Deb 9.2(GNOME, MATE; gtk2) i386:
FB 3.0.2.32703, диалект 3, SS,
Lazarus 1.9(r.57265); FPC 3.1.1 (r.38477), IBX by -Rik-; IBE 2017.4.19.2
...
Рейтинг: 0 / 0
Возможна ли такая выборка?
    #39615778
slay2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я вот так делал
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
with
    before_items as (
        select first 3
            t.Id
        from tbl_test t
        where
            t.Id < :num
        order by t.Id desc
    ),
    after_items as (
        select first 4
            t.Id
        from tbl_test t
        where
            t.Id >= :num
        order by t.Id
    ),
    all_items as (
        select
            *
        from before_items
        union all
        select
            *
        from after_items
        order by 1
    )
select
    i.Id,
    s.field1
from all_items i
inner join tbl_second s on s.test = i.Id
...
Рейтинг: 0 / 0
Возможна ли такая выборка?
    #39615783
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док,
...
Рейтинг: 0 / 0
Возможна ли такая выборка?
    #39615787
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док,

обычно такие вещи делаются без skip

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT
        ID,
       STR_FLD,
       INT_FLD,
       CURR_FLD,
       DATE_FLD
FROM TBL_TEST
WHERE ID >= :ID_FIRST
ORDER BY ID
FETCH FIRST 10 ROWS ONLY



для того чтобы запись была посередине придётся делать примерно как показал slay2012

С сортировкой по другим полями тоже можно, но только если одновременно есть сортировка по ID, ну и запрос усложняется

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT
        ID,
       STR_FLD,
       INT_FLD,
       CURR_FLD,
       DATE_FLD
FROM TBL_TEST
WHERE ID >= :ID_FIRST AND STR_FLD >= :STR_FLD
ORDER BY STR_FLD, ID
FETCH FIRST 10 ROWS ONLY
...
Рейтинг: 0 / 0
Возможна ли такая выборка?
    #39615788
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
slay2012,

а разве это не эквивалент where
Код: sql
1.
2.
3.
...
WHERE t.Id BETWEEN (:num - 4) and (:num + 5)
... 


?
...
Рейтинг: 0 / 0
Возможна ли такая выборка?
    #39615790
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док,

нет конечно. ID может быть с пропусками
...
Рейтинг: 0 / 0
Возможна ли такая выборка?
    #39615793
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДокХотел узнать, можно ли проделать то же самое, но если сортировка будет осуществляться по любому другому полю. Это возможно принципиально ? Или есть другой путь? Был бы благодарен за любые советы и конструктивную критику.Сортировка "по любому полю" делается на клиенте, а при изменении сортировки у тебя в выборке может не оказаться тех строк по краям центральной строки, которые реально присутствуют в таблице, но которые ты не отфетчил. Вижу только один вариант - константные режимы сортировки, реализованные в хранимой процедуре выборки.
...
Рейтинг: 0 / 0
Возможна ли такая выборка?
    #39615800
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devСортировка "по любому полю" делается на клиенте
вот тоже подумалось уже после стартового поста.
...
Рейтинг: 0 / 0
Возможна ли такая выборка?
    #39615830
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Докrdb_devСортировка "по любому полю" делается на клиентевот тоже подумалось уже после стартового поста.У тебя там не так много полей и, возможно, тебе придется реализовать в одной хранимой процедуре 3 - 4 выборки по константным режимам сортировки. Иными словами, помимо ID, тебе придется передавать в ХП еще и режим сортировки, ну и в реализации этой ХП, копипастой нареализовывать код с заменой поля или списка полей в предложении ORDER BY.
...
Рейтинг: 0 / 0
Возможна ли такая выборка?
    #39615857
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devСортировка "по любому полю" делается на клиентЕсли не тянуть на клиента всю таблицу, то - нет, не делается.
Ибо нужно отсортировать и выбрать часть записей.
Что ты будешь сортировать на клиенте по name, когда выбрал записи, опираясь на ID ?
...
Рейтинг: 0 / 0
Возможна ли такая выборка?
    #39615875
Шавлюк Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня есть процедура str_to_id, в которую передается список id через запятую, в том же порядке и выдаеются. Left join с главной таблицей сортировка уже определена
...
Рейтинг: 0 / 0
Возможна ли такая выборка?
    #39615918
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док, правда, есть еще два варианта:
1. Через функцию sprintf (C/C++) формировать на клиенте EXECUTE BLOCK с запросами и требуемым порядком сортировки. Как-то так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
const char sql__tblTest[] = "EXECUTE BLOCK\r\n\
  (\r\n\
    ID_FIRST TYPE OF COLUMN TBL_TEST.ID = :param_Id\r\n\
  )\r\n\
  RETURNS\r\n\
  (\r\n\
    ID TYPE OF COLUMN TBL_TEST.ID,\r\n\
    STR_FLD TYPE OF COLUMN TBL_TEST.STR_FLD,\r\n\
    INT_FLD TYPE OF COLUMN TBL_TEST.INT_FLD,\r\n\
    CURR_FLD TYPE OF COLUMN TBL_TEST.CURR_FLD,\r\n\
    DATE_FLD TYPE OF COLUMN TBL_TEST.DATE_FLD\r\n\
  )\r\n\
AS\r\n\
    DECLARE VARIABLE m_ID TYPE OF COLUMN TBL_TEST.ID,\r\n\
    DECLARE VARIABLE m_STR_FLD TYPE OF COLUMN TBL_TEST.STR_FLD,\r\n\
    DECLARE VARIABLE m_INT_FLD TYPE OF COLUMN TBL_TEST.INT_FLD,\r\n\
    DECLARE VARIABLE m_CURR_FLD TYPE OF COLUMN TBL_TEST.CURR_FLD,\r\n\
    DECLARE VARIABLE m_DATE_FLD TYPE OF COLUMN TBL_TEST.DATE_FLD\r\n\
BEGIN\r\n\
  SELECT ID, STR_FLD, INT_FLD, CURR_FLD, DATE_FLD\r\n\
    FROM TBL_TEST\r\n\
    WHERE ID = :ID_FIRST\r\n\
    INTO: m_ID, m_STR_FLD, m_INT_FLD, m_CURR_FLD, m_DATE_FLD;\r\n\
  FOR\r\n\
      SELECT *
        FROM (
          SELECT ID, STR_FLD, INT_FLD, CURR_FLD, DATE_FLD\r\n\
            FROM TBL_TEST\r\n\
            WHERE %s\r\n\
            ORDER BY %s DESC\r\n\
            ROWS 5)\r\n\
        ORDER BY %s ASC
        INTO: ID, STR_FLD, INT_FLD, CURR_FLD, DATE_FLD\r\n\ 
    DO SUSPEND;\r\n\
  FOR\r\n\
      SELECT ID, STR_FLD, INT_FLD, CURR_FLD, DATE_FLD\r\n\
        FROM TBL_TEST\r\n\
        WHERE %s\r\n\
        ORDER BY %s ASC\r\n\
        ROWS 4\r\n\
        INTO: ID, STR_FLD, INT_FLD, CURR_FLD, DATE_FLD\r\n\ 
    DO SUSPEND;\r\n\
END";

и, наконец, sprintf. Например, для порядка сортировки по строке и дате (STR_FLD, DATE_FLD):
Код: plaintext
1.
2.
int cnt=sprintf(buffer, sql__tblTest, "STR_FLD <= :m_STR_FLD AND DATE_FLD <= :m_DATE_FLD", "STR_FLD, DATE_FLD",\
    "STR_FLD, DATE_FLD", "STR_FLD > :m_STR_FLD AND DATE_FLD > :m_DATE_FLD", "STR_FLD, DATE_FLD");



2. Либо, схожим образом использовать EXECUTE STATEMENT...INTO в хранимой процедуре - собирая запрос из кусков и распарсив строковый параметр с полями порядка сортировки.
...
Рейтинг: 0 / 0
Возможна ли такая выборка?
    #39615928
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В такой реализации, при некоторых условиях, возможен маленький косячок, поэтому, лучше так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
const char sql__tblTest[] = "EXECUTE BLOCK\r\n\
  (\r\n\
    ID_FIRST TYPE OF COLUMN TBL_TEST.ID = :param_Id\r\n\
  )\r\n\
  RETURNS\r\n\
  (\r\n\
    ID TYPE OF COLUMN TBL_TEST.ID,\r\n\
    STR_FLD TYPE OF COLUMN TBL_TEST.STR_FLD,\r\n\
    INT_FLD TYPE OF COLUMN TBL_TEST.INT_FLD,\r\n\
    CURR_FLD TYPE OF COLUMN TBL_TEST.CURR_FLD,\r\n\
    DATE_FLD TYPE OF COLUMN TBL_TEST.DATE_FLD\r\n\
  )\r\n\
AS\r\n\
    DECLARE VARIABLE m_ID TYPE OF COLUMN TBL_TEST.ID,\r\n\
    DECLARE VARIABLE m_STR_FLD TYPE OF COLUMN TBL_TEST.STR_FLD,\r\n\
    DECLARE VARIABLE m_INT_FLD TYPE OF COLUMN TBL_TEST.INT_FLD,\r\n\
    DECLARE VARIABLE m_CURR_FLD TYPE OF COLUMN TBL_TEST.CURR_FLD,\r\n\
    DECLARE VARIABLE m_DATE_FLD TYPE OF COLUMN TBL_TEST.DATE_FLD\r\n\
BEGIN\r\n\
  SELECT ID, STR_FLD, INT_FLD, CURR_FLD, DATE_FLD\r\n\
    FROM TBL_TEST\r\n\
    WHERE ID = :ID_FIRST\r\n\
    INTO: m_ID, m_STR_FLD, m_INT_FLD, m_CURR_FLD, m_DATE_FLD;\r\n\
  FOR\r\n\
      SELECT *
        FROM (
          SELECT ID, STR_FLD, INT_FLD, CURR_FLD, DATE_FLD\r\n\
            FROM TBL_TEST\r\n\
            WHERE %s\r\n\
            ORDER BY %s DESC\r\n\
            ROWS 5)\r\n\
        ORDER BY %s ASC
        INTO: ID, STR_FLD, INT_FLD, CURR_FLD, DATE_FLD\r\n\ 
    DO SUSPEND;\r\n\
  ID = m_ID;\r\n\
  STR_FLD = m_STR_FLD;\r\n\
  INT_FLD = m_INT_FLD;\r\n\
  CURR_FLD = m_CURR_FLD;\r\n\
  DATE_FLD = m_DATE_FLD;\r\n\
  SUSPEND;\r\n\
  FOR\r\n\
      SELECT ID, STR_FLD, INT_FLD, CURR_FLD, DATE_FLD\r\n\
        FROM TBL_TEST\r\n\
        WHERE %s\r\n\
        ORDER BY %s ASC\r\n\
        ROWS 4\r\n\
        INTO: ID, STR_FLD, INT_FLD, CURR_FLD, DATE_FLD\r\n\ 
    DO SUSPEND;\r\n\
END";

sprintf для порядка сортировки по строке и дате (STR_FLD, DATE_FLD):
Код: plaintext
1.
2.
int cnt=sprintf(buffer, sql__tblTest, "STR_FLD < :m_STR_FLD AND DATE_FLD < :m_DATE_FLD", "STR_FLD, DATE_FLD",\
    "STR_FLD, DATE_FLD", "STR_FLD > :m_STR_FLD AND DATE_FLD > :m_DATE_FLD", "STR_FLD, DATE_FLD");
...
Рейтинг: 0 / 0
Возможна ли такая выборка?
    #39615939
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,

аж кровь из глаз брызнула.
...
Рейтинг: 0 / 0
Возможна ли такая выборка?
    #39615943
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv, от "\r\n"? Зато в трассировке и MON$SQL_TEXT будет форматированный запрос.
...
Рейтинг: 0 / 0
Возможна ли такая выборка?
    #39615945
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док(дабы избежать полного фетча)
Чисто из любопытства: а что у вас за проблема с полным фетчем?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Возможна ли такая выборка?
    #39616082
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovЧисто из любопытства: а что у вас за проблема с полным фетчем?
"мы тут посоветовались" ©
Я чисто эмпирически попытался замерить время полного фетча с сортировкой по ID этой табли с 400К записями. Получилось на клиенте что-то около 20-23 сек (в IBE около 15-16 сек). И это на локалке.

При таком раскладе мне либо логику отображения записей в приложении менять надо (сейчас на морде классическая таблица со списком пациентов со сортировкой по времени последнего посещения), либо искать проктостоматологические способы фетча ограниченного кол-ва записей. Ибо есть у меня мысли еще попробовать тягать записи с удаленной базы через инет, если это возможно

Пока в поисках и раздумье ...
...
Рейтинг: 0 / 0
Возможна ли такая выборка?
    #39616090
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДокПри таком раскладе мне либо логику отображения записей в приложении менять надо (сейчас на
морде классическая таблица со списком пациентов со сортировкой по времени последнего
посещения),

Таки да, стоит эту логику немного осмыслить. Поскольку с сортировкой по времени последнего
посещения она как-то не согласуется с изначальной постановкой "чтобы запись с определенным
ID визуально отображалась в середине выборки".

И даже в начальной постановке лично я бы не считал фоновый фетч двух запросов в двух
направлениях "излишне проктостоматологическим". Может выглядеть страшно на первый взгляд,
но это забавное упражнение на программирование.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Возможна ли такая выборка?
    #39616232
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov, кстати, если бы разработчики FirebirdSQL в следующей версии (или в каком-нибудь минорном релизе "четвёрки") реализовали запрос на изменение CORE-5583 , то можно было бы, ко всему прочему, реализовывать подобие постоянных (в пределах транзакции) серверных курсоров партионной выборкой клиентом.
...
Рейтинг: 0 / 0
Возможна ли такая выборка?
    #39616247
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,

тикет полная лабуда. В таком виде как он описан шансы близки к нулю
...
Рейтинг: 0 / 0
Возможна ли такая выборка?
    #39616248
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис, у меня с англ. не очень...
...
Рейтинг: 0 / 0
Возможна ли такая выборка?
    #39616276
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,

почитал. замечу, что вначале надо научиться изъясняться на родном языке, а уже потом переводить это на другой язык.
Особенно показателен в этом плане Hommer - его request про регистр идентификаторов прямо-таки требовательный, что непривычно для англоязычной аудитории. Мы тут дубинками размахиваем, и выражаемся, и все такое, но ТАМ это не принято, люди просто не понимают такую интонацию (вероятно пока, через пару лет, видимо, тоже научатся, благодаря собственным дипломатам).
...
Рейтинг: 0 / 0
Возможна ли такая выборка?
    #39616283
Фотография Старый плюшевый мишка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док Ибо есть у меня мысли еще попробовать тягать записи с удаленной базы через инет, если это возможно

Пока в поисках и раздумье ...

Настоятельно рекомендую реплицировать через некий центральный узел справочник пациентов и аккумулировать на нём же оперативные данные о посещениях. Справочник по логике вещей должен быть относительно стабилен, а оперативку опять же по логике вещей должно быть вполне допустимо фетчить в начале сеанса работы с этого центра. Миксить всё это добро в какое-нибудь in-memory-table и сортировать её на клиенте хоть по диагонали каждые полминуты. Я пользовал для этого клиентдасет, удобно. Позиционирование после сортировки - вообще не вопрос. При работе по сети всё упирается в символьные поля, данные - фигня по сравнению с ними, и их лучше реплицировать. Я начинал с целиковых запросов от сателлитов к центру, когда перешёл на эту схему, получил ускорение в 45 раз.
...
Рейтинг: 0 / 0
Возможна ли такая выборка?
    #39616291
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv, на родном языке гораздо проще, так как можно позволить себе расписать на несколько страниц в подробностях, а там RFC, да еще и по аглицки. Если бы я перевёл русскую "партянку" через "гугель перекладач", было бы еще хуже.
...
Рейтинг: 0 / 0
Возможна ли такая выборка?
    #39616297
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,

я читая английский текст и так вижу что с родным как раз "не очень", а не "гораздо проще". Именно поэтому и упомянул, что "сначала лучше бы на родном". А если есть годное предложение, нет никаких проблем помочь перевести.
К слову, у буржуев не случайно принято месседжи оформлять в 10 слов, 25 слов, 50 слов и т.д.
...
Рейтинг: 0 / 0
Возможна ли такая выборка?
    #39616302
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv, и что же именно ты видишь? :)
...
Рейтинг: 0 / 0
Возможна ли такая выборка?
    #39616325
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,

вижу только одно, что тренироваться надо. и в русском, и в английском :-)
...
Рейтинг: 0 / 0
Возможна ли такая выборка?
    #39616345
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Старый плюшевый мишкаМиксить всё это добро в какое-нибудь in-memory-table и сортировать её на клиенте хоть по диагонали каждые полминуты.
Собственно, так и задумано сейчас (если я правильно вас понял). С той лишь разницей, что центральный сервер и клиент - "одно и то же лицо" :)

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

Всем спасибо за помощь и советы.
...
Рейтинг: 0 / 0
Возможна ли такая выборка?
    #39616361
LDW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
LDW
Гость
Док, изобретаешь свой Live Data Window ?
Помнится, AnyDAC когда-то поддерживал и Lazarus.
...
Рейтинг: 0 / 0
Возможна ли такая выборка?
    #39616367
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док> Порционный фетч на клиента при скроллировании грида я более-менее решил.

Т.е. как именно решил? Когда именно и как происзходит переключение от In-memory к Live-Dataset?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Возможна ли такая выборка?
    #39616370
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvrdb_dev,

вижу только одно, что тренироваться надо. и в русском, и в английском :-)Иными словами, ты не можешь пояснить "что не так" с моим Русским? Похоже, тренироваться в родном языке надо не одному мне... ;)
...
Рейтинг: 0 / 0
Возможна ли такая выборка?
    #39616413
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,

я не могу сказать что у тебя там с построением языковых конструкций, но терминология в тикете мутная. И объяснить её ты не можешь. Да и предлагаемый синтаксис вырви глаз.
...
Рейтинг: 0 / 0
Возможна ли такая выборка?
    #39616428
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LDWДок, изобретаешь свой Live Data Window ?
ух-ты, а я и не подозревал, что делаю это
Гаджимурадов РустамКогда именно и как происзходит переключение от In-memory к Live-Dataset?
если я правильно понял семантику слова Live-Dataset, то на клиенте в доп.потоке, при скроллировании грида туда-сюда. Выглядит примерно так
...
Рейтинг: 0 / 0
Возможна ли такая выборка?
    #39616430
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док,

можно в фоне загрузить немного больше записей. Например загрузить сразу 10 экранов при достижени 8-ого в фоне (без отображения ожидания) догрузить ещё 10 и так далее
...
Рейтинг: 0 / 0
Возможна ли такая выборка?
    #39616471
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

а это мысль. Можно использовать два меморидатасета и в основном потоке подключать их поочередно по определенному условию. А наполнять в доп.потоке не отображаемый в данный момент датасет.
...
Рейтинг: 0 / 0
Возможна ли такая выборка?
    #39616533
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисrdb_dev,
я не могу сказать что у тебя там с построением языковых конструкций, но терминология в тикете мутная. И объяснить её ты не можешь. Да и предлагаемый синтаксис вырви глаз.По англицки - трудно, а по русски - сколько угодно.
...
Рейтинг: 0 / 0
Возможна ли такая выборка?
    #39616570
Фотография Старый плюшевый мишка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДокСимонов Денис,

а это мысль. Можно использовать два меморидатасета и в основном потоке подключать их поочередно по определенному условию. А наполнять в доп.потоке не отображаемый в данный момент датасет.

Что-то я не пойму зачем эти сложности. Разве что из любви к искусству... Или я совсем не понимаю задачи. Проверь - есть частная медицинская контора, имеющая несколько филиалов. Клиентов - ну пусть 40 тысяч, хотя и это уже очень много. Врачи, которых клиенты считают "своими", в разные дни недели принимают в разных филиалах. И перенаправляют клиентов друг другу, если возникает необходимость квалифицированного обслуживания по теме, в которой "основной" врач не особо копенгаген. Отсюда необходимость распределённого доступа к данным о клиентах и историям болезней. Затянуть такие данные запросом к единой базе в локальной сети - вообще тьфу в нормальной (в смысле реляционной теории, а не таланта разработчика) структуре. Проблемы начинаются именно из-за распределённого хранения и доступа. Которые и решаются через IMT. Которую при такой динамике изменения данных накачать нужно один раз в начале рабочего дня врача, а дальше верти как хочешь со скоростью мухи. Что я понимаю неправильно?
...
Рейтинг: 0 / 0
Возможна ли такая выборка?
    #39616615
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Старый плюшевый мишкаЧто я понимаю неправильно?
Все правильно.

однако...У меня в год около 1000-1200 первичных пациентов и 700-800 повторных (зависит от экономической ситуации в стране). Суммарно (по всем филиалам, но одного города) в медицинской конторе, где я сейчас остался работать, трудится где-то минимум 60-70 врачей на постоянной основе, не считая бесчисленных совместителей. Нетрудно посчитать, что за 10 лет кол-во народу в базе может быть немало.

Таки да. Вряд ли кол-во пациентов в базе превысит население города миллионника
...
Рейтинг: 0 / 0
Возможна ли такая выборка?
    #39616630
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Старый плюшевый мишка,

автор сразу предупредил что задачка пятничная. Пусть экспериментирует. Хорошая разминка для ума.

На самом деле я не понимаю на фига оно в десктопном варианте, ибо там и так есть недофетченный курсор + обновление текущей записи. А вот в попытка сделать такое в вебе, где часто испольуется постраничная навигация, наверное имеет смысл
...
Рейтинг: 0 / 0
Возможна ли такая выборка?
    #39616632
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док,

А умерших из базы удаляют? Иначе превысит.
...
Рейтинг: 0 / 0
Возможна ли такая выборка?
    #39616647
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSeryА умерших из базы удаляют?
если только сами попросят :)
...
Рейтинг: 0 / 0
Возможна ли такая выборка?
    #39616657
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSeryДок,

А умерших из базы удаляют? Иначе превысит.
такие системы пока не так много времени работают, чтобы умершие доставляли проблемы )
...
Рейтинг: 0 / 0
Возможна ли такая выборка?
    #39616713
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дегтярев Евгений,

Если учесть специфичность базы, здоровые и живущие в ней регистрируются значительно реже.
За 65 лет умерших станет больше живых в любом случае, в любой базе.
...
Рейтинг: 0 / 0
Возможна ли такая выборка?
    #39616761
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSeryЗа 65 лет умерших станет больше живых в любом случае, в любой базе.Прям осел, падишах и Ходжа. :)

Док,
Что мешает держать сервер прямо на десктопе твоего врача? Да обычный полноценный сервер с обычной базой, а базу подкачивать обычным репликатором пару раз в час, все равно быстрее пациент не добежит от одного врача к другому, конкурентного списания товара с остатков тоже не предполагается бай дезайн. так что конфликтов на апдейтах я вижу. Базулька-то красота, сплошные инсерты и селекты, ни конкуренции, ни обгонов, ни версий. Вот только с шифрованием придется работать, персональные данные самой стремной категории.
...
Рейтинг: 0 / 0
Возможна ли такая выборка?
    #39616953
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_PisarevskyЧто мешает держать сервер прямо на десктопе твоего врача?
Хм, я как-то про этот вариант не подумал.
Изначально все это задумывалось (и реализовано в нынешнем виде) для локальной сети. А потом пришла мысль, а если потом пересесть на 3х звенку? При сабжевом подходе, наверное, переход займет немного времени...

Вообще
Симонов Денисавтор сразу предупредил что задачка пятничная. Пусть экспериментирует. Хорошая разминка для ума.
поэтому не воспринимайте тему очень серьезно :)
...
Рейтинг: 0 / 0
Возможна ли такая выборка?
    #39617050
Фотография Старый плюшевый мишка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Докпоэтому не воспринимайте тему очень серьезно :)

Тады расскажу что напомнили рассуждения о визуализации с двух встречно сортированных запросов. Во времена далёкие, теперь почти былинные, я лет 10 работал в команде, кормившейся с АСУП на базе BTrieve Record Manager . Это значит, что ни о каких курсорах речи не было. Но технология была передовая, клиент-сервер. Но позаписно. Клиент через API говорил серверу какую запись и с помощью какого индекса надо ему предоставить, а как - не его клиентово дело. Ну и начал я с нескольких инструментальных слоёв, начиная с обёртки над блоком параметров обращений к API и заканчивая гридами с многоэтажными шапками и раскрашенными как попугай. И у этого самого грида для накачки были предусмотрены открытые для адаптации к конкретной задаче два метода, которые я назвал TudaSverhu и TudaSnizu. Да. А в команде в разные периоды случались и женщины и даже, прикиньте, девушки. Нет, я лично не проверял, но по социальному статусу точно. Мужики эти названия воспринимали совершенно в рабочем порядке, а вот тётки кокетливо хихикали при обсуждении планов работы...
...
Рейтинг: 0 / 0
Возможна ли такая выборка?
    #39617232
pastor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_PisarevskyWildSeryЗа 65 лет умерших станет больше живых в любом случае, в любой базе.Прям осел, падишах и Ходжа. :)

Док,
Что мешает держать сервер прямо на десктопе твоего врача? Да обычный полноценный сервер с обычной базой, а базу подкачивать обычным репликатором пару раз в час, все равно быстрее пациент не добежит от одного врача к другому, конкурентного списания товара с остатков тоже не предполагается бай дезайн. так что конфликтов на апдейтах я вижу. Базулька-то красота, сплошные инсерты и селекты, ни конкуренции, ни обгонов, ни версий. Вот только с шифрованием придется работать, персональные данные самой стремной категории.

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

а по-хорошему - достаточно одной центральной с вебмордой и парой-тройкой запасных каналов
...
Рейтинг: 0 / 0
Возможна ли такая выборка?
    #39617722
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pastorа по-хорошему - достаточно одной центральной с вебмордой и парой-тройкой запасных каналов
насколько я могу наблюдать по разным ЛПУ, сейчас это де-факто взято за некий корпоративный стандарт. Правда, морда не столь юзабельная, как на классическом десктопе. Вангую, когда-нибудь мы будем сильно по ним скучать :)
...
Рейтинг: 0 / 0
Возможна ли такая выборка?
    #39617744
pastor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Докpastorа по-хорошему - достаточно одной центральной с вебмордой и парой-тройкой запасных каналов
насколько я могу наблюдать по разным ЛПУ, сейчас это де-факто взято за некий корпоративный стандарт. Правда, морда не столь юзабельная, как на классическом десктопе. Вангую, когда-нибудь мы будем сильно по ним скучать :)

это возвращение старого доброго мэйн-кунафрейма

вместо разметки ANSI escape - HTML
вместо зоопарка операционок и компов - HTML

развитие идет по спирали
...
Рейтинг: 0 / 0
Возможна ли такая выборка?
    #39617810
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Докpastorа по-хорошему - достаточно одной центральной с вебмордой и парой-тройкой запасных каналов
насколько я могу наблюдать по разным ЛПУ, сейчас это де-факто взято за некий корпоративный стандарт. Правда, морда не столь юзабельная, как на классическом десктопе. Вангую, когда-нибудь мы будем сильно по ним скучать :)
Да, формы в браузере не столь юзабельны и отзывчивы как нативные, но зато весь код в одном месте, обновление и доставка изменений до клиента проще некуда, работает на любой кофеварке.
Но мне больше импонирует компромиссный подход, как в мобилках, нативное приложение и сервер со своим API, все прелести нативного интерфейса + достаточно живенько можно работать даже на дохлых каналах. За API возможностей для оптимизации как мне кажется больше чем на клиенте.

зы
Участвовал в написании API для самозаписи пациентов через интернет. Сделали сервис, который кеширует все необходимые данные, задействованные в API (талоны, расписание и пр.), все запросы обрабатываются из памяти, в БД обращение только при бронировании или отмене талона. И БД разгрузили и API ускорили.
...
Рейтинг: 0 / 0
50 сообщений из 50, показаны все 2 страниц
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Возможна ли такая выборка?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]