Лучший способ просмотреть таблицу с * много * столбцов? - PullRequest
12 голосов
/ 06 ноября 2008

Риск быть урезанным, я хочу спросить, каков наилучший механизм (лучший, очевидно, субъективный для нарушения практики, присущего здесь) для просмотра данных из таблицы, используя C #, с лотом из колонны. Я имею в виду что-то вроде 1000.

Теперь, прежде чем вы будете довольны всеми щелчками или выбросите ответы типа «какого черта у вас когда-нибудь будет таблица с таким количеством столбцов», позвольте мне сказать, что это на самом деле является частью требования к дизайну. Мы собираем данные как можно быстрее из 1000 точек данных. Нам нужно хранить их как можно быстрее, отсюда и плоский стол. Данные должны быть напрямую доступны из SQL Server, следовательно, из базы данных (мы используем SQL Compact с таблицей-direct).

Итак, давайте пока забудем все, что мы узнали о правильном проектировании базы данных, правилах нормализации и т. Д., И сосредоточимся только на том факте, что у меня есть таблица с 1000 столбцами, и я хочу иметь возможность отображать данные на экране, чтобы удостовериться, что эти данные действительно поступают туда.

Я пробовал сетку данных. Его тошнит, потому что (что неудивительно) он не предназначен для обработки такого количества столбцов.

Я пытался использовать программу просмотра в Studio. Он рвется после 256, плюс конечному пользователю все равно не будет установлена ​​Studio.

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

Соответствующая (или частично релевантная) информация:

  • Таблица содержит 1000 столбцов (прочитайте выше, прежде чем получить счастливый клик)
  • Использование SQL Compact версии 3.5
  • Бег на рабочий стол
  • Ищем ответ с управляемым кодом

Ответы [ 21 ]

0 голосов
/ 06 ноября 2008

Какая часть данных имеет решающее значение для первоначального просмотра? Я могу видеть что-то вроде сетки типа основной / подробный, где вы помещаете критические столбцы (скажем, как 10) в сетку данных, и когда пользователь щелкает, чтобы просмотреть детали, вы можете взять оставшиеся столбцы и отобразить их в виде " свойства области "или что-то в этом отношении.

0 голосов
/ 06 ноября 2008

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

  • Ваш SQL может разрешить определение 1000 столбцов.
  • Строка SQL не может превышать ограничение байта строки.

Каждая реализация базы данных имеет размер страницы (4 КБ / 8 КБ), и одна строка должна соответствовать этому размеру данных. NULL - это обычно freebies. Это означает, что 1000 дюймов 1000 x 4 байта будут просто соответствовать размеру страницы 4 КБ.

Если вы говорите данные с varchars, то проблема еще хуже. Сколько символов в каждом столбце? Сколько столбцов можно заполнить? Если у вас в среднем 10 символов, а размер страницы составляет 8 КБ, данные будут потеряны из-за ошибки SQL.

Смейся, если нужно, но эта ситуация действительно произошла с особенно долго набираемой машинисткой в ​​плоском дататоре, который, как я знал, раздвигал границы.

0 голосов
/ 06 ноября 2008

Кто будет читать таблицу из 1000 столбцов ??? Попробуйте придумать способ фильтрации или визуализации данных.

0 голосов
/ 06 ноября 2008

Имеет прокручиваемую панель и показывает 10 столбцов за один раз (они могут быть активно загружены или кэшированы или все, что вам нужно). Когда вы прокрутите влево, покажите первые десять. Прокручивая вправо, покажите последнюю последовательность столбцов. Таким образом, всего в любой точке активны только 10 столбцов. Попытка на самом деле отобразить 1000 столбцов, по моему мнению, была бы чокнутой. PS: это не более чем идеальное предположение; Я не совсем уверен, возможно ли это дистанционно.

0 голосов
/ 06 ноября 2008

Возможно, вам следует изучить базу данных другого типа. Я слышал, что ориентированные на столбцы базы данных хороши для такого рода вещей (тогда как типичная СУБД ориентирована на строки). Кроме того, если вы не собираетесь возвращаться к обновлению строк после их первой вставки, возможно, двоичный плоский файл будет лучше, чем гигантская таблица?

0 голосов
/ 06 ноября 2008

Вы можете проверить у своей базы пользователей и посмотреть, что им действительно нужно увидеть, а затем настроить представления для каждой отдельной потребности, чтобы уменьшить количество столбцов.

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

0 голосов
/ 06 ноября 2008

Если все, что вам нужно, это убедиться, что данные заполнены, то почему бы не иметь каждый столбец со значением по умолчанию, скажем, 'void', 'blank' и т. Д.

Затем вы можете выполнить итерацию, считая не по умолчанию / итого, чтобы показать процент.

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

0 голосов
/ 06 ноября 2008

Я чувствую себя грязно даже за то, что предлагаю это, но вы могли бы сделать что-то вроде:

SELECT Field1 + ' - ' + Field2 + ... AS EvilMegaColumn FROM Table

но на самом деле я думаю, что это относится к категории "если вы сталкиваетесь с этим ограничением, вы делаете что-то не так". Я действительно не вижу ни причины, ни скорости, ни чего-либо другого, для чего нужно 1000 столбцов ...

0 голосов
/ 06 ноября 2008

Если взглянуть на него под косым углом, я бы спросил, нужно ли пользователю одновременно загружать все столбцы?

Если бы пользователи были рады, если бы одновременно отображалось подмножество столбцов (скажем, 100 или специальные наборы за один раз), я бы использовал какую-то сетку данных (встроенную или ListView, или, может быть, стороннего) для отображения подмножества, при этом CheckedListView пристыкован сбоку, что позволяет отображать подмножество интереса.

В качестве альтернативы, вы можете отобразить какие-либо сводные данные, показывающие количество / среднее / ххх для групп из 100 столбцов?

0 голосов
/ 06 ноября 2008

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

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

...