Что такое жизнеспособная локальная база данных для Windows Phone 7 сейчас? - PullRequest
1 голос
/ 14 декабря 2010

Мне было интересно, что является жизнеспособным решением для баз данных для локального хранилища на Windows Phone 7 прямо сейчас. Используя поиск, я наткнулся на эти 2 темы, но им уже несколько месяцев. Мне было интересно, если есть какие-то новые разработки в базах данных для WP7. И я не нашел ни одного отзыва о базах, упомянутых в ссылках ниже.

Мои требования:

  • Это должно быть бесплатно для коммерческого использования
  • Сохранение / обновление записи должно сохранять только реальную запись, а не всю базу данных (в отличие от БД WinPhone7)
  • Возможность быстрого запроса к таблице с ~ 1000 записями с использованием LINQ.
  • Также должен работать в симуляторе

EDIT:
Только что попробовал Sterling с помощью простого тестового приложения: выглядит хорошо, но у меня есть 2 проблемы.

  1. Создание 1000 записей занимает 30 секунд с использованием db.Save(myPerson). Человек - простой класс с 5 свойствами.
    Затем я обнаружил, что есть метод db.SaveAsync<Person>(IList). Это нормально, потому что он больше не блокирует текущий поток.
    НО У меня вопрос: можно ли сразу вызвать db.Flush() и выполнить запрос на сохраняющемся в настоящий момент IList? (потому что для сохранения записей в синхронном режиме требуется до 30 секунд). Или мне нужно подождать, пока BackgroundWorker закончит сохранение?

  2. Запрос этих 1000 записей с помощью LINQ и предложения where в первый раз занимает до 14 секунд для загрузки в память.
    Есть ли способ ускорить это?

Вот некоторые результаты тестов: (Юнит-тесты были выполнены на HTC Trophy)

-----------------------------
purging: 7,59 sec
creating 1000 records: 0,006 sec
saving 1000 records: 32,374 sec
flushing 1000 records: 0,07 sec
-----------------------------
//async
creating 1000 records: 0,04 sec
saving 1000 records: 0,004 sec
flushing 1000 records: 0 sec
-----------------------------
//get all keys 
persons list count = 1000 (0,007)
-----------------------------
//get all persons with a where clause 
persons list with query count = 26 (14,241)
-----------------------------
//update 1 property of 1 record + save
persons list with query count = 26 (0,003s)
db saved (0,072s)

Ответы [ 4 ]

5 голосов
/ 14 декабря 2010

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

http://sterling.codeplex.com/

(полное раскрытие: мой проект)

1 голос
/ 30 января 2011

try Siaqodb является коммерческим проектом и, в отличие от Sterling, не сериализует объекты и сохраняет все в памяти для запроса. Siaqodb может запрашивать у поставщика LINQ, который может эффективно извлекать из базы данных даже значения полей безлюбые объекты в памяти или загрузка / создание только тех объектов, которые были запрошены.

0 голосов
/ 09 февраля 2011

Вы также можете попробовать Ninja Database Pro. Похоже, у него больше возможностей, чем у Стерлинга.

http://www.kellermansoftware.com/p-43-ninja-database-pro.aspx

0 голосов
/ 14 декабря 2010

Perst бесплатно для некоммерческого использования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...