Подходящая база данных для хранения 20 ГБ для Delphi, Firemonkey - PullRequest
2 голосов
/ 28 января 2012

У меня нет опыта разработки баз данных, поэтому мне нужны ваши предложения по выбору базы данных, которую можно использовать в Firemonkey.

Мне нужно хранить html-файлы (без носителя сейчас, но они могут быть с), их общий размер составляет около 20 ГБ (несжатый текст). Главной особенностью должен быть максимально быстрый поиск текста в базе данных, и должна быть возможность реализовать поиск людей (например, Google). Кроме того, может быть сжатие (требуется 20 ГБ для хранения. Если сжатие замедляет поиск, это не требуется).

Какие базы данных подходят мне? Большое спасибо за ваши предложения!

Отредактировано

Требования:

  1. Цена: Бесплатно
  2. Расположение: местный или удаленный
  3. Поддержка операционной системы: Windows
  4. Системные требования: база данных с большой площадью (надеюсь, в обмен на лучшие выступления)
  5. Исполнения: быстрый поиск текста
  6. Параллельные пользователи: 20
  7. Полнотекстовая индексация и поиск: человек (как в Google) быстро требуется текстовый поиск
  8. Управляемость: не имеет большого значения

Я знаю онлайновую юридическую базу данных, которая может искать слова по 100 ГБ информации в миллисекундах. Мне нужна та же производительность, и требуется поиск в Google.

Ответы [ 7 ]

7 голосов
/ 28 января 2012

Уровень доступа к базе данных Delphi отделен от FireMonkey, он также используется VCL (хотя FM AFAIK использует только LiveBindings для доступа к данным, но в вашем случае это не проблема).

Сегодня 20 ГБна самом деле не так много данных.Практически любая база данных будет обрабатывать их без особых усилий при правильной настройке.Какой движок выбрать, зависит от:

  • Цена: сколько вы собираетесь потратить на него?
  • Местоположение: вам нужна локальная база данных (та же машина) или удаленная?(LAN или WAN)?
  • Поддержка операционной системы: на какой ОС она должна работать?
  • Системные требования: вам нужна база данных небольшого размера или вы можете использовать базу данных большего размераодин (мы надеемся, в обмен на лучшие показатели)?
  • Показатели: каковы требуемые показатели?
  • Параллельные пользователи: сколько пользователей будет подключаться к базе данных одновременно?
  • Полныйиндексирование и поиск текста: не все базы данных предлагают его "из коробки"
  • Управляемость: некоторые базы данных могут требовать большего управления, чем другие.

Пока нет "одной базы данных, подходящей для всех".

4 голосов
/ 28 января 2012

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

http://en.wikipedia.org/wiki/Comparison_of_relational_database_management_systems

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

Если у вас есть ферма серверов, которая уверена, что ваша БД поддерживает распределение и что-то вродебалансировки нагрузки (большинство в некоторой степени зависит от того, что я понимаю).

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

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

Что я бы предложил, основываясь на вашем отредактированном вопросе, это написать (или найти) парсер илирегулярное выражение для извлечения всех важных элементов из HTML, которые вы хотели бы найти для поиска.Затем сохраните их в базе данных вместе со ссылкой на то, где они были найдены в HTML.С точки зрения поиска, подобного Google, если вы имеете в виду, как с точки зрения того, как он может исправить орфографические ошибки и использовать синонимы, вам, вероятно, понадобится какой-то особый код для поиска в словаре по орфографии и поиска по тезаурусу синонимов.Я полагаю, что полнотекстовый поиск в любой современной БД удовлетворит необходимость запроса с помощью LIKE или аналогичных операторов в предложении where.

Похоже, ответ ldsandon в любом случае охватывает большую часть этого.TLDR;если нет, спасибо за чтение.

3 голосов
/ 28 января 2012

Рассматривали ли вы базы данных NoSQL?Статья Wikipedia объясняет их отличия от баз данных SQL, а также упоминает, что они подходят в качестве хранилища документов.

http://en.wikipedia.org/wiki/NoSQL

В статье перечислено около двенадцати реализаций в категории хранилищ документов, многие из которых открытыисточник.(Jackrabbit, CouchDB, MongoDB).

Этот вопрос о Stackoverflow содержит несколько указателей для клиентов Delphi:

Delphi и NoSQL

Я бы также рассмотрел кеширование на сервере приложений, чтобы ускоритьдо поиска.И, конечно же, решение для индексирования текста, такое как Apache Lucene .

3 голосов
/ 28 января 2012

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

К сожалению, Delphi не поставляется с компонентами доступа к данным Postgres. Вы можете подключиться через ODBC или приобрести компоненты, доступные, например, у Devart , DA-Soft или microOLAP .

1 голос
/ 29 января 2012

Существует версия Firebird с полнотекстовым поиском в соответствии с документацией - http://www.red -soft.biz / ru / document_21 - она ​​использует Apache Lucene, популярную поисковую систему

1 голос
/ 28 января 2012

Попробуйте сервер базы данных Advantage.

Управлять и настраивать легко.Оба dbase-как и языки управления данными SQL.Быстрый индексированный полнотекстовый поиск.Кроме того, непревзойденная поддержка самих разработчиков.

Локальный сервер (автономная версия, в отличие от сетевого сервера) является бесплатным.

1 голос
/ 28 января 2012

Я бы взял Microsoft SQL Server Express Edition.Я думаю, что 2008 R2 является последней стабильной версией, но есть и Denali (2011).Он соответствует всем имеющимся критериям.

Вы можете использовать ADO для работы.

...