|
|
|
О хранении разреженных массивов
|
|||
|---|---|---|---|
|
#18+
а точнее - о понимании различия между логическими и физическими уровнями. Нам тут мумпсятники в нос тыкали разреженными массивами, мол, их хранить неудобно, много места теряется в таблице с 1001 колонкой, 999 из которых пустые. Так вот, дорогие мои сторонники мумпса : есть такая вполне себе реляционная субд Sybase IQ. Которая хранит данные на физическом уровне по столбцам. И вот в ней хоть тесять тысяч колонок в таблице заведите, но если в них ничего нет - то и на диске ничего не хранится. В таком вот аксепте ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2007, 20:54 |
|
||
|
О хранении разреженных массивов
|
|||
|---|---|---|---|
|
#18+
Один бит (NULL FLAG) на поле на таблице шириной в 1024 колонки - доп расход максимум 128 байт. Индексы не пострадают, NULL в них писать незачем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2007, 21:32 |
|
||
|
О хранении разреженных массивов
|
|||
|---|---|---|---|
|
#18+
Выбегалло А что, кто-то понимает разреженные массивы как "редкозаполненные"? Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2007, 22:37 |
|
||
|
О хранении разреженных массивов
|
|||
|---|---|---|---|
|
#18+
Выбегаллоно если в них ничего нет - то и на диске ничего не хранится. Ну слава богу, мы уж переживать начали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2007, 23:11 |
|
||
|
О хранении разреженных массивов
|
|||
|---|---|---|---|
|
#18+
mv Выбегалло А что, кто-то понимает разреженные массивы как "редкозаполненные"? Posted via ActualForum NNTP Server 1.3 а кто-то нет ? Кому-то непонятно, что в 99.(9) случаев фоновым элементом будет NULL ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2007, 00:37 |
|
||
|
О хранении разреженных массивов
|
|||
|---|---|---|---|
|
#18+
Выбегалло а кто-то нет ? Кому-то непонятно, что в 99.(9) случаев фоновым элементом будет NULL ? Ну, удачи вам. Веселых гигабайтов. Заполненных Null - ами. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2007, 05:04 |
|
||
|
О хранении разреженных массивов
|
|||
|---|---|---|---|
|
#18+
Выбегаллоа точнее - о понимании различия между логическими и физическими уровнями. К вопросу о понимании. Отсутствие элемента массива - это не пустое поле, а отсутствие самой записи, так что вообще ничего не хранится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2007, 09:19 |
|
||
|
О хранении разреженных массивов
|
|||
|---|---|---|---|
|
#18+
Выбегаллоа точнее - о понимании различия между логическими и физическими уровнями. Нам тут мумпсятники в нос тыкали разреженными массивами, мол, их хранить неудобно, много места теряется в таблице с 1001 колонкой, 999 из которых пустые. Так вот, дорогие мои сторонники мумпса : есть такая вполне себе реляционная субд Sybase IQ. Которая хранит данные на физическом уровне по столбцам. И вот в ней хоть тесять тысяч колонок в таблице заведите, но если в них ничего нет - то и на диске ничего не хранится. В таком вот аксепте можно и попугая научить курить. ))) чего только не сделают с таблицами, чтобы сделать их "наиболее эффективной и универсальной формой хранения данных". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2007, 09:28 |
|
||
|
О хранении разреженных массивов
|
|||
|---|---|---|---|
|
#18+
Мыш Летучийможно и попугая научить курить. ))) чего только не сделают с таблицами, чтобы сделать их "наиболее эффективной и универсальной формой хранения данных". Конечно, не все же такие умные, чтобы хранить ВСЕ возможные разновидности таблиц в ISAM ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2007, 09:33 |
|
||
|
О хранении разреженных массивов
|
|||
|---|---|---|---|
|
#18+
Неплохо бы поиметь в студии определение разреженного массива. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2007, 09:51 |
|
||
|
О хранении разреженных массивов
|
|||
|---|---|---|---|
|
#18+
авторНеплохо бы поиметь в студии определение разреженного массива. это такие массивы, редкие. если серьезно, то в М хранение данных организовано обычным страничным B-деревом, у которого используется динамический "составной" ключ, с произвольной длиной ключа. И вместо ссылки на данные у обычного индекса хранятся сами данные (тоже произвольной длины, в тех версиях М с которыми я работал, до 255 символов). почему разработчики М называют это "разреженным массивом" - я не знаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2007, 10:18 |
|
||
|
О хранении разреженных массивов
|
|||
|---|---|---|---|
|
#18+
Тогда сначала что есть массив. Например двумерным массивом назовем отношение R(X1:T1,X2:T2,A:TA), на котором определена функциональная зависимость F:(X1,X2)->A. 1) разреженность относительно текущего значения R : R[X1,X2] < R[X1]*R[X2] 2) разреженность относительно области определения ФЗ: R[X1,X2] < T1*T2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2007, 10:55 |
|
||
|
О хранении разреженных массивов
|
|||
|---|---|---|---|
|
#18+
2 kdv Вам как работавшему с М и свободному от догм, вопрос. kdvв М хранение данных организовано обычным страничным B-деревом, у которого используется динамический "составной" ключ А в памяти-то массивы (т.е. просто кусок памяти с адресацией) есть ? А то чего-то я читал документацию по "будущему человечества постреляционной объектной (другие страшные слова добавить по вкусу) субд СФСРУ" нигде не увидал про работу с памятью, локаль, глобаль, туманные намёки, на то что хранится (я про память) всё в узлах и типа "так же как на диске". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2007, 11:47 |
|
||
|
О хранении разреженных массивов
|
|||
|---|---|---|---|
|
#18+
СФСРУ следует читать как CACHE :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2007, 11:48 |
|
||
|
О хранении разреженных массивов
|
|||
|---|---|---|---|
|
#18+
авторА в памяти-то массивы (т.е. просто кусок памяти с адресацией) есть ? конечно есть. собственно, set a(15)=10 и set ^a(15)=10 отличаются только тем, что ^a будет сохранено на диск. А без "зычки" - в памяти. А какие уж они в памяти, "разреженные" или нет - это я не знаю. "мерность" массивов в памяти, если мне память не изменяет :-), аналогичная дисковым. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2007, 15:46 |
|
||
|
О хранении разреженных массивов
|
|||
|---|---|---|---|
|
#18+
маркетоидная активность InterSystems построена на следующем: CACHE представляет собой комбинацию из ядра нижнего уровня и нескольких надстроек. 1. собственно, ядро и язык M. Это то, где нет никаких объектов, SQL и прочего. Сплошные "разреженные массивы" что в памяти что на диске. Язык - интепретируемый. для работы с массивами существует ряд операций: прямая запись и чтение, и перебор - получение следущего узла индекса на этом уровне или по уровню вглубь. Например, мы сделали "массив" на диске (что присваивается элементам массива - в данном примере пофиг. в переменная в памяти - "локаль", на диске - глобаль) set ^a(1)=.. set ^a(2)=.. set ^a(3)=.. потом захотели добавить "измерение" на уровень 2. и добавили set ^a(2, 1)=... set ^a(2, 'a)= ... и так далее. Так вот, если в цикле применить $o(^a(x)) то оно будет "перебирать" элементы первого уровня, т.е. 1,2, 3. Если другую конструкцию (в диамсе 3.1 было $zo()), то будет перебирать 1, 2, 2.1, 2.а, 3. Собственно, все. А. В конструкции ^a(1)=x значение x - строка. Чисел как таковых явно нет, т.е. они есть, но отличить в переменной число от строки можно написав if +a ... "атрибуты" в M обычно хранят по образу set ^a(1)='field1|field2|field3|' в качестве разделителя может выступать любой символ. Есть функции вытаскивания "поля" из такой строки - $extract, $piece и т.п. 2. Поверх этого дела в CACHE есть надстройка SQL. Можно создавать "таблицы", но они превращаются в глобали этой прослойкой. Т.е. это эмуляция РМД 3. опять же поверх М есть надстройка Cache Object Language (или Script). Это объекты, которые при хранении опять же проецируются на глобали, но как то там можно писать триггеры и т.п. Собственно, все, про "пост-реляционные" СУБД. :-) Да. И разработчики, которые активно используют CACHE, они прослойку SQL практически никогда не используют, да и понятно, что тут она как козе баян. В основном используют М и COS. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2007, 15:58 |
|
||
|
О хранении разреженных массивов
|
|||
|---|---|---|---|
|
#18+
kdv"атрибуты" в M обычно хранят по образу set ^a(1)='field1|field2|field3|'А можно наверно и set ^a(1,'field_name1')='field1' set ^a(1,'field_name2')='field2' ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2007, 16:49 |
|
||
|
О хранении разреженных массивов
|
|||
|---|---|---|---|
|
#18+
ModelR kdv"атрибуты" в M обычно хранят по образу set ^a(1)='field1|field2|field3|'А можно наверно и set ^a(1,'field_name1')='field1' set ^a(1,'field_name2')='field2' ? Может быть и можно, но в примерах на M частенько наблюдается хранение информации не только в листьях, но и узлах s ^a(1)='field1|field2|field3|' s ^a(1,102)='line1' s ^a(1,103)='line2' при обходе дерева атрибуты от элементов(говоря языком XML) придётся, а даже намёка на схему в М я пока не обнаружил ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2007, 17:11 |
|
||
|
О хранении разреженных массивов
|
|||
|---|---|---|---|
|
#18+
мод Выбегаллоа точнее - о понимании различия между логическими и физическими уровнями. К вопросу о понимании. Отсутствие элемента массива - это не пустое поле, а отсутствие самой записи, так что вообще ничего не хранится. К вопросу о понимании : вполне себе реляционная СУБД Sybase IQ таки да, ничего не хранит. Как я уже говорил. Или до мумсоидов с первого раза не доходит ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2007, 18:31 |
|
||
|
О хранении разреженных массивов
|
|||
|---|---|---|---|
|
#18+
ИзопропилНеплохо бы поиметь в студии определение разреженного массива. Массив, в основном содержащий "фоновый элемент" (в условиях СУБД - чаще всего NULL) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2007, 18:33 |
|
||
|
О хранении разреженных массивов
|
|||
|---|---|---|---|
|
#18+
ModelRА можно наверно и можно. смотря что делать. Можно вообще так: set ^buh('накладные', 1)=... set ^buh('счета-фактуры', 55)=... set .... для ссылок приходится делать отдельные узлы или глобали. например: set ^a("транзисторы", "кт315а")="50/50/15/22/77" если надо "сортировку" по параметру 1, то тогда делаем set ^a("транзисторы по ...", 50)="кт315а" таким образом мы можем при быстром доступе к "параметру" получить "идентификатор" ссылки на полную "запись". и т.д. Изопропила даже намёка на схему в М я пока не обнаружил по идее, она якобы не нужна. или ее можно хранить в другой глобали. или в этой же... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2007, 18:47 |
|
||
|
О хранении разреженных массивов
|
|||
|---|---|---|---|
|
#18+
Выбегалло ИзопропилНеплохо бы поиметь в студии определение разреженного массива. Массив, в основном содержащий "фоновый элемент" (в условиях СУБД - чаще всего NULL) Тогда нужно постороить сначала отображение М-структуры на массив и только после этого рассуждать о "разреженности" массива ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2007, 18:55 |
|
||
|
О хранении разреженных массивов
|
|||
|---|---|---|---|
|
#18+
ИзопропилНеплохо бы поиметь в студии определение разреженного массива. Типа прикалываешься? Сам попросил!: • Массив – упорядоченный список, в котором все подсписки одного уровня имеют одинаковую длину. • Вектор – одномерный массив, т.е. элементы массива не являются списками. • Матрица – двумерный массив, подсписки которой имеют такую же длину, как и сама матрица. В более общем случае под матрицей предполагается двумерный массив. • Под строками матрицы m понимают ее подсписки (т.е. m[ ]), а под столбцами – списки, состоящие из элементов подсписков, находящихся на одинаковых позициях (т.е. m[[All,i]]). • Массивы, имеющие большую часть элементов равными нулю, т.е. больше половины массива, называются разреженными. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2007, 05:48 |
|
||
|
О хранении разреженных массивов
|
|||
|---|---|---|---|
|
#18+
nik_x ИзопропилНеплохо бы поиметь в студии определение разреженного массива. Типа прикалываешься? Сам попросил!: • Массив – упорядоченный список, в котором все подсписки одного уровня имеют одинаковую длину. • Вектор – одномерный массив, т.е. элементы массива не являются списками. • Матрица – двумерный массив, подсписки которой имеют такую же длину, как и сама матрица. В более общем случае под матрицей предполагается двумерный массив. • Под строками матрицы m понимают ее подсписки (т.е. m[ ]), а под столбцами – списки, состоящие из элементов подсписков, находящихся на одинаковых позициях (т.е. m[[All,i]]). • Массивы, имеющие большую часть элементов равными нулю, т.е. больше половины массива, называются разреженными. -- может ли "m" быть не числом ? -- а если часть элементов вообще отсутствует ? -- а если "большая часть элементов " is Null ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2007, 08:46 |
|
||
|
О хранении разреженных массивов
|
|||
|---|---|---|---|
|
#18+
nik-xТипа прикалываешься? Сам попросил!: • Массив – упорядоченный список, в котором все подсписки одного уровня имеют одинаковую длину. какая то отсебятина. Что-то я не припоминаю таких дерзких трактований общепринятых терминов. Массив это список из n элементов, действительно имеющих одинаковую длину. А разреженный массив, это когда элементы массива, котором не заданы значения, не хранятся в массиве. Но называть глобали "разреженным массивом" - imho криво, неправильно, и путает тех, кто не в курсе. Хотя м.б. и звучит. - А как вы храните данные! - Данные у нас хранятся в разреженных массивах! - 8-0 это смешно даже по отношению к РСУБД, где таблица, сиречь "массив записей", является даже не "разреженным массивом", а неупорядоченным множеством. Тут, собственно, и разница моделей данных. М это работа с упорядоченными массивами (как правило перебор элементов массива), а Р - работа с множествами (операции над множествами). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2007, 10:10 |
|
||
|
|

start [/forum/topic.php?fid=35&fpage=31&tid=1553385]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
256ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
72ms |
get tp. blocked users: |
2ms |
| others: | 9ms |
| total: | 380ms |

| 0 / 0 |
