Лучшие практики для пользовательских файловых структур

Вы можете использовать фильтр или определить размер в агрегатах, как

"aggs": {
        "NAME": {
          "filter": {
            "term": {
              "ATTRIBUTES.ATTR_TYPE": "EDUCATION_DEGREE"
            }
          },
          "aggs": {
            "NAME": {
              "terms": {
                "field": "ATTRIBUTES.DESCRIPTION",
                "size": 100
              }
            }
          }
        }
      }
    }
  }
5
задан Andy 1 March 2009 в 22:49
поделиться

7 ответов

Обычно пойдите с самой простой вещью, которая может возможно работать по крайней мере сначала. Рассмотрите, например, UNIX, где большинство конфигурационных файлов является только whitepace-разграниченными полями или полями, разграниченными с другим символом (как/etc/passwd, который использует ":" разделители, потому что поле GCOS может содержать пробелы.)

Если Вашим данным нужно намного больше структуры, то спросите себя, "какие инструменты я могу использовать легко?" Python и Ruby имеют JSON и YAML, например.

XML в основном полезен, если у Вас уже есть много основанного на XML материала, ИЛИ Вы ожидаете преобразовывать XML к визуализуемой форме в браузере. Иначе это обычно очень тяжело (размер кода, сложность) для того, что Вы получаете от него.

7
ответ дан 18 December 2019 в 09:54
поделиться

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

Формат зависит в большой степени от приложения и объема данных. Для некоторых приложений XML является соответствующим, поскольку другие структуры фиксированного размера приложений, сохраненные в двоичном файле, хороши.

Я использую много различных форматов, в зависимости от ситуации, например:

  • файл простого текста (разграниченный) для хранения наборов данных для анализа Matlab и R
  • двоичные файлы - для хранения структур фиксированного размера (с динамическим измерил произвольный доступ, становятся трудными, не поддерживая отдельный массив смещений для элементов). Один положительные стороны Вы имеете производительность и располагаете эффективность с интервалами (почему большинство баз данных хранит данные в двоичном формате?), но это не очень хорошо для людей для работы с. Помните порядка байтов.
  • XML - обычно для данных конфигурации или данных, которые я хочу дать другим пользовательским приложениям (наряду с XSD). Другая сторона может записать хорошее преобразование XSLT или использовать данные другим способом (конечно, они могли сделать то же с простым текстом или двоичными данными, учитывая описание формата),
5
ответ дан 18 December 2019 в 09:54
поделиться

Если у Вас нет уникальных требований, используйте что-то, для которого уже существует сформировавшаяся библиотека, таким образом, можно постараться не писать собственный код парсинга. Это означает, что XML/JSON, и т.д., как люди сказал.

Еще один хороший является буферами протокола Google (http://code.google.com/p/protobuf). Там Вы пишете общее определение сообщения, и буферный компилятор протокола генерирует объекты для того, чтобы заполнить, сериализировать и десериализовать данные для Вас. Обычно формат является двоичным, но можно использовать их класс записи TextFormat подобный JSON простой текст также. Хорошая вещь о protobufs состоит в том, что код управления версиями сгенерирован для Вас. В версии 2 Вашего формата файла все, что необходимо сделать, добавляют поля к .proto файлу определения. Новая версия может считать старый формат файла и просто оставляет новые незаполненные поля. Это не точно, для чего были разработаны protobufs, но они делают легкий, эффективный формат двоичного файла для пользовательских сообщений, и код сгенерирован для Вас.

Также посмотрите Экономию Facebook, теперь в инкубаторе Apache.

2
ответ дан 18 December 2019 в 09:54
поделиться

Поскольку годы прошли, я нашел меня все большим количеством текста одобрения, если это не просто вне рассмотрения. ЦП достаточно быстр теперь, когда мы можем декодировать его достаточно быстро.

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

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

1
ответ дан 18 December 2019 в 09:54
поделиться

+1 для XML. Имеет немного служебное, но легкий проанализировать, читайте, и отладка. Может быть строгим, если Вы используете схему. Легкий преобразовать с XSLT, и очень портативный (в проводе или только в pendrive:)

1
ответ дан 18 December 2019 в 09:54
поделиться

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

  • Сколько данных необходимо хранить? Необходимо ли оптимизировать для компактного представления?
  • Действительно ли выполнение чтений/записей очень важно? Необходимо ли оптимизировать для сериализации доступа к диску и низкого влияния и десериализации?
  • Вам нужен произвольный доступ в файле? Необходимо ли оптимизировать структуру для поиска в данных?
  • Эти данные собираются использоваться через различные системы, возможно с различными кодировками символов? Необходимо ли оптимизировать для мобильности?

Природа самих данных окажет влияние. Действительно ли это - плоская структура списка? Действительно ли это - дерево? Действительно ли это - циклический график? Записи фиксированных или переменных ширин?

После того как ответы на эти вопросы известны, можно выбрать среди опций, сохранив его максимально простым. Часто популярные опции (XML, CSV, YAML) удовлетворят Вашим целям. В противном случае затем необходимо будет разработать собственное форматирование и собственную запись и чтение процедур.

1
ответ дан 18 December 2019 в 09:54
поделиться

Существует столько возможностей, но самым прагматическим должен быть XML

  • Существуют достойные библиотеки XML почти для каждой платформы разработки
  • Большинство платформ позволяет сериализацию графа объектов с несколькими строками кода, таким образом, XML является безболезненным для реализации
  • Большинство платформ имеет в памяти и/или читателе потоковой передачи, таким образом, можно обработать действительно большие файлы без слишком большого использования памяти
  • Большая часть платформы обеспечивает преобразователь XSLT, таким образом, можно переместить файлы от одного формата до другого, даже от XML до не XML
  • Там индексируют расширение для XML для обработки действительно больших файлов также
  • XML имеет XSD для проверки формата, прежде чем Вы попытаетесь считать его
  • XML способен к представлению любого простого или сложного объекта
  • Если Вы волнуетесь по поводу размера файла, просто архивируете заключительный XML. Эта техника используется в Microsoft Office и т.д.
  • XML все еще человекочитаем
  • XML является единым стандартом
0
ответ дан 18 December 2019 в 09:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: