একটি সার্ভারের সাথে স্থানীয় এইচটিএমএল 5 ডিবি (ওয়েবএসকিউএল স্টোরেজ, এসকিউএলাইট) সিঙ্ক্রোনাইজ করার সর্বোত্তম উপায় [বন্ধ]


151

আমি একটি স্থানীয় ডাটাবেস (এইচটিএমএল 5 ওয়েব স্টোরেজ ব্যবহার করে) এর সাথে একটি মোবাইল ওয়েব অ্যাপ্লিকেশন (আইফোন এবং অ্যান্ড্রয়েডের জন্য) বিকাশ করছি যাতে ব্যবহারকারী অফলাইনে থাকা অবস্থায় আমার অ্যাপ্লিকেশনটি এখনও ব্যবহারযোগ্য।

এটি নিখুঁতভাবে কাজ করছে, তবে আমি একটি সার্ভারে স্থানীয় ডেটা সংরক্ষণ করতে চাই। সুতরাং আমার একটি সার্ভারে একটি ডিবি দিয়ে স্থানীয় ডিবি সিঙ্ক্রোনাইজ করা দরকার। সিঙ্ক্রোনাইজেশনটি কেবল একটি উপায় হতে পারে তবে ভবিষ্যতে আমি এটি উভয় উপায়ে (সার্ভার <-> স্থানীয় ডিবি) সিঙ্ক্রোনাইজ করতে চাই।

এই রিকোরিয়মেন্টটি খুব সাধারণ দেখাচ্ছে (বা ভবিষ্যতে মোবাইল ওয়েব অ্যাপ্লিকেশনের জন্য সাধারণ হবে), তবে আমি এটির কাজ করে একটি লাইব্রেরি পাই না।

আমি জানি যে গুগল তাদের মোবাইল ওয়েব অ্যাপে (উদাঃ জিমেইল) এটি করছে এবং আমি ডাব্লুএসপিএল প্রকল্পটি একটি গুগল প্রকল্প পেয়েছি তবে ডাউনলোডের উত্স ছাড়াই।

যদি আমি কোনও সমাধান খুঁজে না পাই তবে আমি এটি করার জন্য একটি লাইব্রেরি তৈরি করব, কারণ একতরফা সিঙ্ক করা কঠিন দেখায় না, তবে আমি মনে করি অন্য সমাধান আছে কিনা wonder


2
আমি জানি না কোনও লিবিস আছে কিনা তবে এটির সহজতম উপায়টি সংশোধন টাইমস্ট্যাম্প সংরক্ষণ করা এবং অন্যদিকে রেকর্ডের চেয়ে নতুন যে রেকর্ডগুলিতে পরিবর্তনগুলি স্থানান্তরিত করা এবং সর্বশেষ সিঙ্কের পরে সংযোজন এবং মোছা স্থানান্তরিত হচ্ছে বলে মনে হচ্ছে। স্থানীয় এবং সার্ভারের ঘড়িগুলি সিঙ্কে না থাকলে এটি ক্রেজি হতে পারে তবে আপনি কিছু ভাববেন। - মন্তব্য হিসাবে পোস্ট করা কারণ এটি সম্ভবত খুব সহায়ক নয় এবং আপনাকে কোনও উত্তর সরবরাহ করে না।
ইভান ভুইকা 21

ধন্যবাদ ইভান আপনি ঠিক বলেছেন, যদি স্থানীয় এবং সার্ভারের ঘড়িগুলি সিঙ্কে না থাকে, তবে এটি অগোছালো হতে পারে ... আমি সবেমাত্র পেয়েছি: quickconnect.pbworks.com/User-Enterprise- সিনক্রোনাইজেশন এটি বলে যে এটি একটি স্থানীয় এইচটিএমএল 5 ডিবিকে একটি সহ সিঙ্ক্রোনাইজ করতে পারে একটি সার্ভারে ডিবি। আমার এটিকে আরও গভীরভাবে দেখার দরকার, এবং এটি কুইক কানেক্ট ফ্রেমওয়ার্কের বাইরে চলতে পারে কিনা তা দেখুন ...
স্যামুয়েল

আমি আরও একটি সমাধান পেয়েছি: impel.simulacre.org/blog/… দেখতে দুর্দান্ত লাগছে তবে আপনাকে মটুলস লাইব্রেরি, এবং ইমপেল ওআরএম ব্যবহার করতে হবে ...
শমূয়েল

1
কীভাবে কাউচডিবি? couchdb.apache.org
জুলিয়ানাম

4
বিষয়গুলি আলোচনার জন্য , স্ট্যাক এক্সচেঞ্জ প্রশ্নের জন্য । এক পর্যায়ে স্ট্যাক এক্সচেঞ্জে এর মতো পোস্টগুলি গৃহীত হয়েছিল, তবে আর নেই।
ক্যাস্পার ওয়ান

উত্তর:


70
  • স্থানীয় সার্ভারের (ক্লায়েন্ট <-> সার্ভার) সাথে একটি স্থানীয় ওয়েবএসকিএল ডিবি সিঙ্ক্রোনাইজ করতে আমি একটি ছোট জেএস লিব তৈরি করেছি ওয়েবস্কুলসিঙ্ক নামে । আপনার কোডে ব্যবহার করতে এবং সংহত করতে খুব সহজ:

https://github.com/orbitaloop/WebSqlSync

  • ওপেন সোর্স প্রকল্প কুইক কানেক্টে একটি সার্ভার ডিবি (মাইএসকিউএল বা অন্যান্য) সাথে স্থানীয় এইচটিএমএল 5 এসকিউএলটি ডিবি সিঙ্ক্রোনাইজ করার জন্য একটি জেএস লাইব্রেরি রয়েছে:

http://quickconnect.pbworks.com/Using-Enterprise-Synchronization

এই লিবটি ব্যবহার করতে, আপনার ডিবি অ্যাক্সেস করার জন্য আপনাকে ফ্রেমওয়ার্কের ডেটাঅ্যাক্সেসঅবজেক্টটি ব্যবহার করতে হবে। এটি ডিবি-তে প্রয়োগ করা সমস্ত এসকিউএল অনুরোধ সংরক্ষণ করে এবং সার্ভারে প্রেরণ করে কাজ করে। এটি মুছে ফেলার ব্যবস্থাপনায় দুর্দান্ত, তবে আপনার যদি প্রচুর আপডেট থাকে তবে সার্ভারটি একই এসকিউএল ভাষা ব্যবহার করা দরকার ...

  • কুইক কানেক্টের আরেকটি প্রকল্প হ'ল নেটিভ এসকিউএলাইট সিঙ্ক (আইওএস বা ম্যাক ওএসের জন্য উদ্দেশ্য সি এবং অ্যান্ড্রয়েডের জাভাতে):

http://www.quickconnectfamily.org/qcdbsync/ (আমি মনে করি এটি সমস্ত এসকিউএল অনুরোধগুলির ইতিহাসও সঞ্চয় করে)

  • আর আমি শুধু আরেকটি প্রতিশ্রুতি জাতীয় গ্রন্থাগার পাওয়া যায়নি: persistenceJS

https://github.com/zefhemel/persistencejs

"দৃistence়তা.জেএস হ'ল একটি অ্যাসিনক্রোনাস জাভাস্ক্রিপ্ট অবজেক্ট-রিলেশনাল ম্যাপার লাইব্রেরি। আপনি এটি ব্রাউজারে, সার্ভারেও (এবং আপনি তাদের মধ্যে ডেটা মডেলগুলি ভাগ করতে পারেন) ব্যবহার করতে পারেন।"

তাদের একটি ডিবি সিঙ্ক মডিউল রয়েছে: ডিওসি

(ক্লায়েন্টে এইচটিএমএল 5 ডিবি এসকিউএলাইট বা গুগল গিয়ার্স এবং সার্ভারে মাইএসকিউএল সহ কাজ করে)

  • এবং ইমপেল.ইনটিউচও রয়েছে । এটি ব্যবহার করা খুব সহজ দেখাচ্ছে (পিএইচপি ফাইলগুলি অন্তর্ভুক্ত সহ) তবে আপনাকে অবশ্যই ক্লায়েন্টের দিকের মটুলস ফ্রেমওয়ার্কটি ব্যবহার করতে হবে:

http://impel.simulacre.org/api/Impel.inTouch

  • সেনচায় একটি সিঙ্ক্রোনাইজেশন পরিষেবাও রয়েছে: সেনচা.আইও । দেখতে দুর্দান্ত দেখাচ্ছে তবে এটি সেনচা টাচ কাঠামোর উপর নির্ভরশীল:

http://www.sencha.com/products/io/


হাই স্যামুয়েল, জেএস লাইব কি আপনার জন্য কাজ করেছে?
ম্যাথিয়াস কনরাডেট

ডিবি সিঙ্ক আপাতত আমার অগ্রাধিকার নয়, তাই আমি আরও হালকা এবং শক্তিশালী সমাধানের জন্য অপেক্ষা করছি, ছেড়ে চলেছি ...
স্যামুয়েল

3
তাদের সকলের পরীক্ষার পরে, আমি মনে করি যে একটি সার্ভার ডিবি দিয়ে ওয়েবএসকিউএল সিঙ্ক্রোনাইজ করার জন্য আমি আমার নিজস্ব ছোট জেএস লিব বিকাশ করব। এটি একটি ডাবল সিঙ্ক হবে (স্থানীয় <-> সার্ভার) এবং কোনও নির্ভরতা থাকবে না। আমি এখানে
স্যামুয়েল

2
আমি আমার নিজস্ব সিঙ্ক সমাধানের প্রথম সংস্করণটি ওয়েবএসএকএলসিঙ্ক নামে শুরু করেছি: github.com/orbitaloop/WebSqlSync (উত্তর নীচে সিএফ)
স্যামুয়েল

1
হাই গাইস, আমি প্রশান্ত সিঙ্ক্রোনাইজেশনের জন্য একটি অধ্যবসায় প্লাগইন শুরু করেছি। এটা এখনও উন্নয়নে কিন্তু কেউ এটা খুঁজে বার করো চায় যদি: github.com/robertokl/persistencejs এবং কাজ রেললাইনে রুবি সঙ্গে সার্ভার / ক্লায়েন্ট সাইড উপর উদাহরণ: github.com/robertokl/persistencejs-restfulSync-example
robertokl

18

আমি ওয়েবসার্কেলসিঙ্ক নামে একটি জেনেরিক সিঙ্ক সমাধান তৈরি করেছি

এটি কোনও কাঠামোর উপর নির্ভর করে না। এটি এখানে উপলভ্য: https://github.com/orbitaloop/WebSqlSync

README ফাইলটি বের করুন:

WebSqlSync

স্থানীয় সার্ভারে স্বয়ংক্রিয়ভাবে একটি স্থানীয় ওয়েবএসকিএল ডাটাবেস (নেভিগেটরে এসকিউলাইট) সিঙ্ক্রোনাইজ করুন। (2 ওয়ে সিঙ্ক: ক্লায়েন্ট <-> সার্ভার)

আপনার বিদ্যমান অ্যাপ্লিকেশনটিতে সংহত করতে খুব সহজ এবং ব্যবহার করা খুব সহজ (কল করার জন্য 2 টি ফাংশন: initSync এবং সিঙ্ক করুন)

ব্যবহার

আরম্ভ

আপনি lib আরম্ভ করতে হবে (উদাহরণস্বরূপ প্রতিটি প্রারম্ভকালে)।

এটি স্বয়ংক্রিয়ভাবে 2 টি টেবিল তৈরি করবে (যদি তারা ইতিমধ্যে বিদ্যমান না থাকে তবে একটি নতুন বা সংশোধিত সমস্ত উপাদান (টেবিল নিউ_লেম) সংরক্ষণ করতে পারে এবং একটি শেষ সিঙ্কের তারিখ (টেবিল সিঙ্ক_ইনফো) সংরক্ষণ করবে It এটি এসকিউএলাইট ট্রিগার তৈরি করবে আপনি যে টেবিলগুলিকে সিঙ্ক্রোনাইজ করতে চান সেগুলিতে INSERT বা আপডেট আপডেট দেখার জন্য (নতুন_লেলেম টেবিলটিতে স্বয়ংক্রিয়ভাবে পরিবর্তিত উপাদানগুলি সন্নিবেশ করতে):

DBSYNC.initSync(TABLES_TO_SYNC, webSqlDb, sync_info, 'http://www.myserver.com', callBackEndInit);

যেখানে সার্ভারের সাথে আপনি সিঙ্ক করতে চান এমন টেবিলের তালিকা যেখানে TABLES_TO_SYNC রয়েছে:

TABLES_TO_SYNC = [
    {tableName : 'table1', idName : 'the_id'},
    {tableName : 'table2'} //if idName not specified, it will assume that it's "id"
];

সিংক্রোনাইজ

সিঙ্ক্রোনাইজেশন শুরু করতে, আপনাকে সিঙ্কন ফাংশনটি কল করতে হবে। আপনি এটি প্রতি X সেকেন্ডে কল করতে পারেন, বা কিছু পরিবর্তন করার পরে উদাহরণস্বরূপ:

DBSYNC.syncNow(callBackSyncProgress, function(result) {
     if (result.syncOK === true) {
         //Synchronized successfully
     }
});

এবং ক্লায়েন্টের জন্য আপনাকে যা করতে হবে তা কেবল। সার্ভারের দিকে, আপনার নিজের সমাধান কোডিং করতে হবে (তবে এটি জটিল নয়)। এবং পিএইচপি এবং জাভাতে কিছু উদাহরণ রয়েছে। আবার, অবদান স্বাগত।


এক বছর পরে এর সংক্ষিপ্তসার করে আপনি কীভাবে বলবেন যে এটি আপনার পক্ষে কাজ করেছে? আমি একটি ভাল ক্লায়েন্ট-সাইড ডিবি খুঁজছি যা ব্রাউজার এবং মোবাইল ইউনিটের জন্য কাজ করে।
নিক্লাস

1
WebSQLSync 25 টিরও বেশি অ্যাপ্লিকেশন (আইওএস এবং অ্যান্ড্রয়েড) এর সাথে খুব ভালভাবে কাজ করছে। ওয়েবএসকিউএল সত্যিই দুর্দান্ত এবং দ্রুত। এটি আইওএস, অ্যান্ড্রয়েড, ব্ল্যাকবেরি (আমার মনে হয় সর্বশেষতম সংস্করণ) এবং অবশ্যই ক্রোম এবং সাফারিতে কাজ করছে। তবে এটি আইই এবং ফায়ারফক্সে কাজ করছে না, কারণ
স্যামুয়েল

ঠিক আছে, উভয় ইতিবাচক এবং নেতিবাচক সেখানে। পুনরুদ্ধারের জন্য ধন্যবাদ!
নিক্লাস

2
লোকালস্টোরেজের জন্য এবং ওয়েবএসকিউএল নয় তবে আপনার কি অনুরূপ কিছু আছে?
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.