Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
25.11.2009, 22:15
|
|||
|---|---|---|---|
|
|||
Как сделать переиндексацию строк в глобале |
|||
|
#18+
Как сделать переиндексовку файлов? Раньше индекс (ID) был с 1. После удаления строк стал 20000. см рисунок Суть проблемы в следующем. Нужно будет удалять промежуточные данные. И таких удалений будет много. Хотелось бы в дальнейшем иметь возможность переиндексировать строки, чтобы они шли по порядку и начинались с единицы (с 1). Какие могут быть предложения? Экспорт глобала во внешний файл, удаление из базы и импорт его в базу ничего не дали. Нумерация так и осталась с 20000. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.11.2009, 23:15
|
|||
|---|---|---|---|
Как сделать переиндексацию строк в глобале |
|||
|
#18+
разумеется выгрузка-загрузка, ничего не решит там довольно большое число может быть в индексе, вы уверены что вам действительно это нужно ? если да, то единственный выход это написать соответствующую обработку, только эта обработка должна отвечать за разрешение зависимостей, и то что бы данные не потерялись когда вы им смените ID если вы используете класс, и этот класс не зависит от других и от него ничего, нет зависимостей, типа отношений, или связь потомок-родитель, и так далее, где могут в другой таблице, быть ссылки на содержимое этой. то тут все просто, пробегаетесь по очереди по пересохраняте с другим ID, выставляете последний ID, перестроить индексы, и все можно дальше работать. все это можно сделать на уровне глобалов не затрагивая объектов. а вот если есть зависимости, то думаю лучше пользоваться уже объектной моделью, с переопределением зависимых ID, иначе у вас ссылки будут ссылаться не туда если вы удаляете, совсем все данные, то можно воспользоваться методом %KillExtent(), он удалит и данные и кто му же сбросит счетчик ID _________________________________ Cache for Windows NT (AMD64) 5.0.21 (Build 6408) Tue Jan 3 2006 13:37:41 EST ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.11.2009, 05:33
|
|||
|---|---|---|---|
Как сделать переиндексацию строк в глобале |
|||
|
#18+
А зачем вы хотите удалять промежуточные ID? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.11.2009, 08:16
|
|||
|---|---|---|---|
Как сделать переиндексацию строк в глобале |
|||
|
#18+
fotopravka.ruСуть проблемы в следующем. Нужно будет удалять промежуточные данные. И таких удалений будет много. Хотелось бы в дальнейшем иметь возможность переиндексировать строки, чтобы они шли по порядку и начинались с единицы (с 1). Какие могут быть предложения? Анологично предыдущему вопросу Код: plaintext 1. 2. 3. 4. 5. Вот только задача у вас кривая - вы по сути дела меняете ID у записей - если у вас это таблица с индексами, то после вышеприведенной программы нужно будет индексы перестраивать. Если у вас есть другие таблицы ссылающиеся на записи в той которую вы "сжимаете" - то вообще всё равно что удалять файлы с диска через форматирование - всё полет в тар-тарары. ЗЫ: Какое значение имеет номер индекса к глобале ? Вы что его пользователю показываете и у него психологическая травма приключается ? Задача ей-богу бессмысленная какая-то. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.11.2009, 09:03
|
|||
|---|---|---|---|
|
|||
Как сделать переиндексацию строк в глобале |
|||
|
#18+
DAiMorразумеется выгрузка-загрузка, ничего не решит там довольно большое число может быть в индексе, вы уверены что вам действительно это нужно ? Я бы не сказал что очень нужно. НО по расчетам, через три месяца, первый ID у меня уже будет начинаться с 46000*24*3=3'312'000 . Просто раздражают такие дырки. DAiMorесли да, то единственный выход это написать соответствующую обработку, только эта обработка должна отвечать за разрешение зависимостей, и то что бы данные не потерялись когда вы им смените ID если вы используете класс, и этот класс не зависит от других и от него ничего, нет зависимостей, типа отношений, или связь потомок-родитель, и так далее, где могут в другой таблице, быть ссылки на содержимое этой. то тут все просто, пробегаетесь по очереди по пересохраняте с другим ID, выставляете последний ID, перестроить индексы, и все можно дальше работать. все это можно сделать на уровне глобалов не затрагивая объектов. Данные ни с чем не связаны, это просто большой объем статистических цифр. Вариант переиндексации конечно выход, да и в инструкциях к Cache написано, что при удалении строк, переиндексация не производятся, но подумал, а вдруг можно выгрузить и загрузить и все перенумеруется. DAiMorесли вы удаляете, совсем все данные, то можно воспользоваться методом %KillExtent(), он удалит и данные и кто му же сбросит счетчик ID Я использую для этих целей Do Kill ^B.ADD (хотя глобал называется В.AD, но в базе глобалов идет как B.ADD) Ваш вариант даже не встречал в инструкциях. :-( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.11.2009, 09:11
|
|||
|---|---|---|---|
|
|||
Как сделать переиндексацию строк в глобале |
|||
|
#18+
Ptn ЗЫ: Какое значение имеет номер индекса к глобале ? Вы что его пользователю показываете и у него психологическая травма приключается ? Задача ей-богу бессмысленная какая-то. Если индекс идет как 10'000'000 и как 1 они в Cache занимают один и тот же объем (при одинаковом количестве записей в глобале)? Если если занимаемый размер один и тот же, то тогда это уже становится делом вкуса. Если нет - то получаем оптимизацию размера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.11.2009, 09:25
|
|||
|---|---|---|---|
Как сделать переиндексацию строк в глобале |
|||
|
#18+
fotopravka.ruа вдруг можно выгрузить и загрузить и все перенумеруется это бессмысленно, потому как глобал это всего лишь многомерный массив, у которого индексами могут быть любые значения, и что пересчитывать тут непонятно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.11.2009, 11:17
|
|||
|---|---|---|---|
|
|||
Как сделать переиндексацию строк в глобале |
|||
|
#18+
fotopravka.ruСуть проблемы в следующем. Нужно будет удалять промежуточные данные. И таких удалений будет много. Что мешает хранить промежуточные данные в другой таблице (возможно даже во временной, т.е. в ^CacheTemp.xxx)? Лучше пересмотреть алгоритм решения задачи, чем пытаться делать низкоуровневые "заплатки". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.11.2009, 16:52
|
|||
|---|---|---|---|
|
|||
Как сделать переиндексацию строк в глобале |
|||
|
#18+
Что мешает хранить промежуточные данные в другой таблице (возможно даже во временной, т.е. в ^CacheTemp.xxx)? Лучше пересмотреть алгоритм решения задачи, чем пытаться делать низкоуровневые "заплатки".[/quot] Данные устаревают через 3-4 месяца. тогда их и нужно будет удалять. Разумеется, при таком раскладе не выгодно создавать "временный файл". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.11.2009, 20:27
|
|||
|---|---|---|---|
Как сделать переиндексацию строк в глобале |
|||
|
#18+
fotopravka.ruЕсли индекс идет как 10'000'000 и как 1 они в Cache занимают один и тот же объем (при одинаковом количестве записей в глобале)? Нет - только вот откуда у вас одинаковое кол- записей в глобале ? То есть вы берете вставляете в таблицу 20-000 записей, потом бац удаляете, и еще 20-000 ? Иначе как у вас объем одинаковый то будет ? Ну давайте забудем что каша хранить данные b-дереве и посчитаем 20-000*1 символ - 19Кб, или 20-000*8 символов - 156Кб fotopravka.ruЕсли если занимаемый размер один и тот же, то тогда это уже становится делом вкуса. Если нет - то получаем оптимизацию размера. Если вам приходиться проводить оптимизацию размера таким странным образом, и оно имеет для вас весьма важное значение, то имеет смысл еще раз оглядеть структуры используемых данных - что то там не так ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.11.2009, 20:30
|
|||
|---|---|---|---|
Как сделать переиндексацию строк в глобале |
|||
|
#18+
fotopravka.ruДанные устаревают через 3-4 месяца. тогда их и нужно будет удалять. Разумеется, при таком раскладе не выгодно создавать "временный файл". Замапьте глобал в отдельную базу - потом эту базу отмонтируете - копируете в архив, на её место подставляете новую - пустую ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.11.2009, 01:18
|
|||
|---|---|---|---|
Как сделать переиндексацию строк в глобале |
|||
|
#18+
как вариант обойтись не объектами, а обычными глобалами. 3-4 месяца работаете с одним глобалом, далее просто мёрджите его в архивный глобал и удаляете текущий используемый. так он у вас будет инициализироваться каждый раз и уже имеющиеся данные не потеряются. не буду голословным, приведу пример Код: plaintext 1. 2. а вот для работы с текущим используемым глобалом ^current написать класс-обёртку, с необходимыми методами для работы с содержимым. одним из методов, как раз и будет архивирование и инициализация. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=39&mobile=1&tid=1558300]: |
0ms |
get settings: |
5ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
129ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
30ms |
get tp. blocked users: |
1ms |
| others: | 223ms |
| total: | 415ms |

| 0 / 0 |
