события db4o?

Попробуйте:

let stringValue: String = "8.20"

let loc = Locale(identifier: "en_GB")

let nf = NumberFormatter()
nf.locale = loc
nf.usesGroupingSeparator = true
nf.numberStyle = .decimal

var decValue: Decimal? = nil

if let _ = nf.number(from: stringValue) {

    var copy = stringValue

    if let sep = loc.groupingSeparator {
        copy = copy.split(separator: Character(sep)).joined()
    }

    decValue = Decimal(string: copy, locale: loc)
}

И вы можете проверить результат следующим образом:

decValue.map { print([111]) }  //8.2
31
задан mafro 21 August 2008 в 21:30
поделиться

4 ответа

Мы выполняем версию.NET DB40 в большом клиент-серверном проекте.

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

Однако действительно необходимо настроить объекты получить этот вид производительности. Например, если у Вас есть список, содержащий много объектов, активация DB4O этих списков является медленной. Существует много способов обойти эту проблему, например, путем инвертирования отношений.

Другая боль является активацией. Когда Вы получите или удалите объект из DB4O, по умолчанию он активирует целое дерево объектов. Например, загрузка Нечто загрузит Foo.Bar.Baz.Bat, и т.д. пока не будет ничего для загрузки. В то время как это хорошо с точки зрения программирования, производительность замедлит более вложенное в Ваших объектах. Для улучшения производительности можно сказать DB4O сколько уровней глубоко активироваться. Это является трудоемким, чтобы сделать, если у Вас есть много объектов.

Другой областью боли был текстовый поиск. Текстовый поиск DB4O далек, намного медленнее, чем полнотекстовое индексирование SQL. (Они скажут Вам это напрямую на их сайте.) Хорошие новости, легко установить текст, ищущий механизм сверху DB4O. На нашем проекте мы подняли трубку Lucene.NET для индексации текстовых полей, которые мы хотим.

Некоторые API, кажется, не работают, такие как API GetField, полезные в применении обновлений базы данных. (Например, Вы переименовали свойство, и Вы хотите обновить свои существующие объекты в базе данных, необходимо использовать эти "отражательные" API для нахождения объектов в базе данных. Другие API, такой как [Индекс], атрибут не работает в стабильных 6,4 версиях, и необходимо вместо этого указать индексы с помощью Настраивания ().Index ("someField"), который не со строгим контролем типов.

Мы засвидетельствовали, что производительность ухудшает большее Ваша база данных. У нас есть база данных 1GB прямо сейчас, и вещи все еще быстры, но совсем не с такой скоростью, как, когда мы запустили с крошечной базы данных.

Мы нашли другую проблему, где Db4O.GetByID закроет базу данных, если идентификатор не будет больше существовать в базе данных.

Мы нашли, что Собственный синтаксис Запроса (самый естественный, интегрированный языком синтаксис для запросов) далек, намного медленнее, чем менее - дружественные запросы СОДОВОЙ. Таким образом вместо ввода:

// C# syntax for "Find all MyFoos with Bar == 23".
// (Note the Java syntax is more verbose using the Predicate class.)
IList<MyFoo> results = db4o.Query<MyFoo>(input => input.Bar == 23);

Вместо того хорошего кода запроса, Вы имеете к ужасному запросу СОДОВОЙ, который основан на операция со строками и не со строгим контролем типов.

Для людей.NET, они недавно представили LINQ-to-DB4O поставщика, который предусматривает лучший синтаксис все же. Однако это все же видно, будет ли производительность в нормальном состоянии с ужасными запросами СОДОВОЙ.

поддержка DB4O была достойна: мы говорили с ними по телефону неоднократно и получили полезную информацию. Их пользовательские форумы рядом с бесполезным, однако, почти все вопросы остаются без ответа. Их средство отслеживания ошибки JIRA получает большое внимание, поэтому если Вы будете иметь ворчащую ошибку, зарегистрируете ее на JIRA на ней, то часто будет фиксироваться. (У нас было 2 ошибки, которые были исправлены и другой, который был исправлен half-assed способом.)

, Если все это не отпугнуло Вас, позвольте мне сказать, что мы очень довольны DB4O, несмотря на проблемы, с которыми мы встретились. Производительность, которую мы имеем, сдула некоторые платформы O/RM, которые мы попробовали. Я рекомендую это.

июль 2015 обновления Имеет в виду, этот ответ был записан обратно в 2008. В то время как я ценю upvotes, мир изменился с тех пор, и эта информация не может быть столь же достоверной, как это было, когда это было записано.

55
ответ дан 27 November 2019 в 22:10
поделиться

Большинство собственных запросов может и эффективно преобразовываться в запросы СОДОВОЙ негласно так, чтобы не имел значения. Используя NQ, конечно, предпочтен, поскольку Вы остаетесь в областях сильного типизированного языка. Если у Вас есть проблемы, заставляя NQ использовать индексы, не стесняйтесь отправлять свою проблему на db4o форумы , и мы попытаемся выручить Вас.

Goran

3
ответ дан 27 November 2019 в 22:10
поделиться

Основная проблема, с которой я встретился с ним, сообщает. Просто, кажется, нет никакого способа выполнить эффективные отчеты против db4o источника данных.

2
ответ дан 27 November 2019 в 22:10
поделиться

Иудейское царство, это кажется, что Вы не используете прозрачную активацию, которая является функцией последней производственной версии (7.4)? Возможно, при определении версии, Вы используете, поскольку могут быть другие вопросы, которые теперь решены в последней версии?

0
ответ дан 27 November 2019 в 22:10
поделиться
Другие вопросы по тегам:

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