Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » InterBase и FireBird: вопросы по работе и их решение

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104

Открыть новую тему     Написать ответ в эту тему

druff

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuriyRR
оффтоп конечно, но датасеты в памяти тоже разные бывают.. мне бы вот хотелось найти приличный датасет для увязки Data-Aware компонентов со списком объектов (экземпляры одного класса). Никто случаем не посоветует хороший вариант?

Всего записей: 402 | Зарегистр. 14-11-2006 | Отправлено: 15:40 04-08-2011
X11



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
мне бы вот хотелось найти приличный датасет

Для сервера Firebird О_о ?

----------
/не мы такие, жизнь такая/

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 15:56 04-08-2011
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuriyRR

Цитата:
К тому же варианты ИМХО очень медленно  

Я бы поостерёгся с таким утверждением. Правда пришлось наваять DynArrayToBinVariant(var V: Variant; const DynArray; Len: Integer) - преобразует динамический массив байтов в исключительно одномерный массив байтов типа вариант. После этого все блобы стали летать. Да и фишка в том, что есть свойство TField.Value - вариант. А вот преобразовывать уже не надо. Да и через датасет я не всегда работаю. Просто забираю данные, тупым присваиванием ссылок на массивы и работаю точно так же с данными типа:
 
p(var v: tvariantarray);
begin
  v['name']:='fio';
  v.next;
...
p(mydataset1); p(ibdataset1)
 
Тут получается что никакой код из модуля DB просто не юзается.
А memotable умеет хранить таблицы в одном файле который расшифровывается когда логин верный?

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 23:22 04-08-2011
YuriyRR



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
delover

Цитата:
А memotable умеет хранить таблицы в одном файле который расшифровывается когда логин верный?

Конечно умеет и в файл можешь писать и в стрим, а в стриме можешь извращаться с ним как заблагорассудится. Я в последнее время склонен к kbmMemTable, но есть и шедевры с поддержкой SQL запросов.

Всего записей: 518 | Зарегистр. 07-06-2007 | Отправлено: 00:29 05-08-2011
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuriyRR
Пожалуй придётся поискать бесплатные и посмотреть. Может удастся прямо их заточить на массивы вариантов. Просто там сортировки бывают далеко нетривиальные. Да и по скорости заценить... )))

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 15:08 05-08-2011
druff

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вопрос: есть ли для птички UDF библиотеки для работы с регулярными выражениями?

Всего записей: 402 | Зарегистр. 14-11-2006 | Отправлено: 19:54 09-08-2011
X11



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Я не встречал, но в птичку 2.5 встроены уже прямо в сервак

----------
/не мы такие, жизнь такая/

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 20:48 09-08-2011
druff

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
X11
да, я видел, но мне встроенного функционала не хватает.. Придётся свои функции написать.

Всего записей: 402 | Зарегистр. 14-11-2006 | Отправлено: 22:26 09-08-2011
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuriyRR

Цитата:
Я в последнее время склонен к kbmMemTable

Ну с первого взгляда компонент пока мне не сможет заменить мой. Я скачал 2007 версию - там нет Extended филдов. По скорости ещё не сравнивал. А какие ещё можно посмотреть? (сори оффтоп)

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 10:53 10-08-2011 | Исправлено: delover, 16:36 10-08-2011
X11



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Народ, звыняйтэ, но здесь Firebird, а не компоненты для Delphi

----------
/не мы такие, жизнь такая/

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 11:29 10-08-2011
druff

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

но при этом тема датасетов в памяти - интересная! Может продолжим её в другом топике?

Всего записей: 402 | Зарегистр. 14-11-2006 | Отправлено: 17:31 10-08-2011 | Исправлено: druff, 17:31 10-08-2011
tanaseduard



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
druff
Я бы продолжил. Интересно еще SQL между датасетами памяти и Master-Detailed связки.

Всего записей: 518 | Зарегистр. 21-11-2009 | Отправлено: 17:41 10-08-2011
X11



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Для этого есть Прикладное программирование -> Вопросы по компонентам
http://forum.ru-board.com/topic.cgi?forum=33&topic=8529&start=3520#16
 
Ну или в прикладном программировании создайте новую тему про наборы данных в памяти

----------
/не мы такие, жизнь такая/

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 17:59 10-08-2011
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
druff
tanaseduard
Тема интересная но я не берусь за её создание. Это касается и FireBird. Интересно потому, что любой SQL сервак можно воспринимать как мощную вычислительную машину + хранилище. Если перекачать из хранилища в клиентский датасет, можно оставить серваку самое интересное -- математику, тем самым сняв очень много нагрузки с базы. Интересно, но упирается всегда всё в то, что ID - айдишники найденные вне базы, на клиенте, бесполезны для сервака. 5000 айдишников это уже 32 кб в запросе... Даже если эти 32кб не меняются на протяжении 3х месяцев, а клиентов 500 и запросов в день от клиента 1000, эти айдишники будут всегда расчитываться и фигурировать в SQL ввиде сложных подселектов для наружного джойна. Это потому что решаем мы "малой кровью".

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 13:28 14-08-2011 | Исправлено: delover, 13:28 14-08-2011
druff

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
delover
Про какие ID идёт речь? а то я похоже не в теме..

Всего записей: 402 | Зарегистр. 14-11-2006 | Отправлено: 22:22 14-08-2011 | Исправлено: druff, 22:26 14-08-2011
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
druff
Например я нахожу словатрь часто встречающихся слов в названиях организаций. Это требуется чтобы исключить их при сравнении. Например ООО, может быть написано английскими буквами русскими буквами маленькими большими и даже цифрой ноль 0.  ООО встречается часто и не должно влиять на результат сравнений. Это клиентский словарь.
При этом сравнение должно проводится только для тех организаций по которым идёт работа. Это джойн между справочником организаций и справочником клиентов. Без этого джойна запрос выполняется на сервере 46 секунд. Почему бы не перекачать результат джойна в клиентский датасет, произвести вычисления ООО на клиенте? - Нет просто смысла. Результат джойна 32кб (это айдишники организаций в строку). Хорошо допустим названия я выполнил на клиенте, а телефоны, майлы или другая характеристика сравнения?

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 09:30 15-08-2011 | Исправлено: delover, 09:33 15-08-2011
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Допустим была мысль заранее вычислить на клиенте частотность слов в названиях. И привязать ввиде объектных филдов - стринглистов к клиент-датасету. А нафига такое счастье если запрос валится уже на 400 айдишниках?

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 12:00 15-08-2011
druff

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
delover
46 секунд это что-то очень долго.. Можно пример запроса посмотреть?

Всего записей: 402 | Зарегистр. 14-11-2006 | Отправлено: 15:42 15-08-2011
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
druff
Естественно прога не использует запрос который от 46 сек до полторы минуты если нужен left. Но он выглядит примерно так:

Код:
select distinct cc.name, c.id, c.name, ...  
from clients c
join cards as cc on (cc.cid=c.id)
where not(c.name is null)

Группировки всегда длительно, а когда среди полей встречаются кодированные блобы, чему удивлятся? Я про оптимизации запросов не собирался говорить. Читаем по порядку ->

Цитата:
При этом сравнение должно проводится только для тех организаций по которым идёт работа.......

Достаточно одного поля - where clients.count_of_join > 0. Однако откуда это поле заполняется? Да 46 сек затраты на то что нужно получить, но это не показатель того как я программирую.
 
При выборке из справочника организаций, где нет условия уникальности, в фоновом потоке, после выборки и отображения данных, начинается вычисление вероятности совпадений. При этом каждая строчка организации должна сравниваться с клиентским датасетом имеющим 25 тысяч отобранных. Визуально это так же как в Виндовс. Заходите в папку с картинками, и виндовс начинает последовательно генерировать превиюшки. Т.е. скорость такая же точно.
 
Инструмент сравнения здесь (обновлено 08.09.2011). В SQL засунуть неполучится

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 18:01 15-08-2011 | Исправлено: delover, 06:05 08-09-2011
druff

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
delover
Просмотрел всю тему, кажется стало чуть понятнее. Твоя программа выполняет следующие действия (поправь меня, если я не прав):
1) выполняешь запрос в FB с объединением справочника организаций и клиентов
2) для каждой записи из полученной выборки выполняешь какой-то сложный расчёт (извини, но я пока не понял, что именно он делает) на клиенте
 
У меня такие вопросы возникли: а нельзя результаты этого сложного расчёта тоже хранить в базе? Или регулярно запускать скрипт, который исправит ошибки в названиях организаций (речь ведь об ошибках, если ООО может быть написано нулями?)

Всего записей: 402 | Зарегистр. 14-11-2006 | Отправлено: 08:15 16-08-2011 | Исправлено: druff, 08:21 16-08-2011
Открыть новую тему     Написать ответ в эту тему

Страницы: 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 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » InterBase и FireBird: вопросы по работе и их решение


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru