Я должен проанализировать десятки тысяч строк данных. Данные импортируются из текстового файла. Каждая строка данных имеет восемь переменных. В настоящее время я использую класс для определения структуры данных. Когда я прочитал текстовый файл, я храню каждый объект линии в универсальном списке, Списке.
Я задаюсь вопросом, должен ли я переключиться на использование реляционной базы данных (SQL), поскольку я должен буду проанализировать данные в каждой строке текста, пытаясь связать его с условиями определения, которые я также в настоящее время храню в универсальных списках (Список).
Цель состоит в том, чтобы перевести большой объем данных с помощью определений. Я хочу, чтобы определенные данные были поддающимися фильтрованию, доступными для поиска и т.д. Используя базу данных имеет больше смысла, больше я думаю об этом, но я хотел бы подтвердить с более опытными разработчиками, прежде чем я внесу изменения, все снова и снова (я использовал структуры и arraylists сначала).
Единственный недостаток, о котором я могу думать, то, что данные не должны быть сохранены после того, как это было переведено и просмотрено пользователем. Нет никакой потребности в постоянном хранении данных, поэтому использование базы данных могло бы быть небольшим излишеством.
Нет необходимости обращаться к базе данных. Это зависит от фактического размера данных и процесса, который вам нужно выполнить. Если вы загружаете данные в список с помощью настраиваемого класса, почему бы не использовать Linq для выполнения запросов и фильтрации? Что-то вроде:
var query = from foo in List<Foo>
where foo.Prop = criteriaVar
select foo;
Настоящий вопрос в том, являются ли данные настолько большими, что их нельзя загрузить в память с комфортом. Если это так, то да, база данных была бы намного проще.
Это небольшой объем данных. Я не вижу смысла привлекать базу данных к вашему анализу.
В C # ЕСТЬ встроенный язык запросов - LINQ. В исходном плакате в настоящее время используется список объектов, так что делать действительно нечего. Мне кажется, что база данных в этой ситуации добавила бы гораздо больше тепла, чем света.
Похоже, вам нужна база данных. Sqlite поддерживает базы данных в памяти (используйте ": memory:" в качестве имени файла). Я подозреваю, что у других также может быть режим в памяти.
Я столкнулся с той же проблемой, с которой вы столкнулись сейчас, когда я работал в моей предыдущей компании. Дело в том, что я искал конкретное и хорошее решение для много файлов, сгенерированных штрих-кодом. Штрих-код создает текстовый файл с тысячами записей в одном файле. Манипулирование и представление данных поначалу было для меня так сложно. На основе записей, которые я запрограммировал, я создаю класс которые читают файл и загружают данные в таблицу данных и могут сохранить их в базе данных. Я использовал базу данных SQL Server 2005. Тогда я смог легко управлять сохраненными данными и представлять их так, как мне нравится. Главное - прочитать данные из файла и сохранить их в базе данных. так что у вас будет много вариантов, которыми можно манипулировать и представить так, как вам нравится.
Если вы не против использования доступа, вот что вы можете сделать
Прикрепите пустую базу данных Access в качестве ресурса При необходимости , запишите базу данных в файл. Запустите оператор CREATE TABLE, который обрабатывает столбцы ваших данных Импортируйте данные в новую таблицу Используйте sql для выполнения ваших вычислений {{ 1}} OnClose, удалите эту базу данных доступа.
Вы можете использовать такую программу, как Resourcer, для загрузки базы данных в файл resx
ResourceManager res = new ResourceManager( "MyProject.blank_db", this.GetType().Assembly );
byte[] b = (byte[])res.GetObject( "access.blank" );
Затем используйте следующий код для извлечения ресурса из проекта. Возьмите массив байтов и сохраните его во временном месте с именем временного файла
«MyProject.blank_db» - это расположение и имя файла ресурсов «access.blank» - вкладка, присвоенная ресурсу для сохранить
Судя по вашему описанию, я думаю, что инструменты командной строки Linux могут очень хорошо обрабатывать ваши данные. Использование базы данных может излишне усложнить вашу работу. Если вы используете окна, эти инструменты также доступны разными способами. Я бы порекомендовал cygwin. Следующие инструменты могут решить вашу задачу: sort, grep, cut, awk, sed, join, paste.
Эти инструменты командной строки unix / linux могут показаться пользователям Windows пугающими, но для тех, кто их любит, есть причины. Вот причины, по которым я люблю их:
Если единственное, что вам нужно сделать, это найти и заменить, вы можно использовать sed и awk, а поиск можно выполнять с помощью grep. Конечно, на платформе Unix.