我正在使用HTML5 IndexedDB概念在我的页面中进行脱机数据库连接..但最初,我想获取大数据以将其存储在我的IndexedDb中,因此为此目的,我试图将Sql Server数据同步到我的IndexedDb Datatbase但我没有找到任何解决方案来做那个..有没有办法做到这一点,如果是这样请帮助我..谢谢..
答案 0 :(得分:7)
除了Editor和Kristof答案之外,我还想补充一些事情,因为我已经开始研究类似的解决方案。
IndexedDB
是一个面向文档的数据库,而SQL
是关系数据库,这意味着你应该在将数据存储到本地之前将其转换为对象模型IndexedDB
中使用多个表并尝试创建联接。 IndexedDB
中的附加表。接下来就是data synchronization - 如果你更新双方(客户端和服务器)的数据,这会变得非常复杂。您在数据同步中面临的主要问题是,您将拥有一个主SQL
数据库和许多本地客户端数据库。
以下是您应该考虑的几件事:
SQL
可以更快地处理较小的事务。 IndexedDB
您可以从Chrome
访问IndexedDB
并提出并行请求 - 这可以加快速度。这只是您在开始实施解决方案之前需要考虑的一些事实,希望它有所帮助。
答案 1 :(得分:3)
SQL是关系数据库。 IndexedDB是一个索引键/值存储,类似于面向文档的数据库。没有开箱即用的方法可以将数据从一系列SQL同步到IndexedDB。您必须手动编写该代码(可能使用a Polyfill like this one作为示例),但请注意inserting large amounts of data consecutively is not a good idea。
答案 2 :(得分:3)
根据我在您的问题中的理解,您只是在db完成时使用indexeddb,就像缓存层一样。我将做的是以下内容。
如果您在线工作,您的数据保存应该存在2个动作。保存到您的服务(SQL服务器)并保存到indexeddb。
如果您离线,我会做2次操作。 On仍在更新indexeddb,但我会添加一个额外的对象存储库,您可以在其中保存必须在服务上执行的所有操作。重新联机后,您可以逐个处理它们。
答案 3 :(得分:2)
我们在HTML5和IndexedDB数据库上实现了crud操作,以提供离线支持。下一步是同步脱机和联机数据库。在本文中,我们将使用ASP.NET Web API实现IndexedDB和SQL Server数据库的同步。
从服务器数据库同步本地数据库:
$('#btnSyncLocal').click(function () {
$.ajax({
url: 'api/service?revision=' + localStorage.customerRevision,
type: 'GET',
dataType: 'json',
success: function (data) {
if (data.Revision == localStorage.customerRevision) {
alert('You are already working on the latest version.');
}
else {
syncData(data);
}
}
});
});
从本地数据库同步服务器数据库:
$('#btnSyncServer').click(function () {
var customers = [];
db.linq.from(config.objectStoreName).select().then(function () {
if (customers.length > 0) {
var postData = { revision: parseInt(localStorage.customerRevision, 10), appID: config.appID, customers: customers };
$.ajax({
url: 'api/service',
type: 'POST',
dataType: 'json',
contentType: "application/json",
data: JSON.stringify(postData),
success: function (data) {
if (data.Revision == localStorage.customerRevision) {
alert('There is newer version on the server. Please Sync from server first.');
}
else {
syncData(data);
}
}
});
}
else {
alert('There is no change in data after your last synchronization.');
}
}, handleError, function (data) {
if (data.Revision == -1) {
customers.push(data);
}
});
});
有关此示例的完整实现,请参阅以下链接:
示例实现在这里: Syncing Offline Database (HTML5 IndexedDB) with Online Database using Asp.Net Web API