আর এ পড়ার জন্য একটি বিশাল (3.5 গিগাবাইট) সিএসভি ফাইল ছাঁটা হচ্ছে


87

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

সুতরাং আমার প্রশ্নটি হ'ল যে আমি সমস্ত কাউন্টি চাই, তবে কেবলমাত্র একটি এক বছর (এবং কেবলমাত্র উচ্চ স্তরের স্তরটি ... প্রায় 100,000 সারি নিয়ে যাচ্ছে) শেষ পর্যন্ত কী পাওয়ার সবচেয়ে ভাল উপায় হবে? এই রোলআপ আর?

বর্তমানে আমি পাইথনের সাথে অপ্রাসঙ্গিক বছরগুলি কেটে ফেলার চেষ্টা করছি, একবারে এক লাইনে পড়ে এবং অপারেটিং করে ফাইলসাইজ সীমাটি ঘুরে দেখি তবে আমি একটি আর-সলিউশন (ক্র্যান প্যাকেজস ঠিক আছে) পছন্দ করি। আর-তে কোনও সময় ফাইলগুলিতে কোনও টুকরো পড়ার মতো উপায় আছে কি?

কোন ধারনা ব্যাপকভাবে প্রশংসা হবে।

হালনাগাদ:

  • সীমাবদ্ধতা
    • আমার মেশিনটি ব্যবহার করার দরকার , তাই ইসি 2 উদাহরণ নেই
    • যতটা সম্ভব আর-র R গতি এবং সংস্থানগুলি এই ক্ষেত্রে উদ্বেগ নয় ... তবে শর্ত আছে যে আমার মেশিনটি বিস্ফোরিত না হয় ...
    • আপনি নীচে দেখতে পাচ্ছেন যে ডেটাতে মিশ্র প্রকার রয়েছে, যা আমাকে পরে চালানো দরকার
  • ডেটা
    • ডেটা 3.5 জিবি, প্রায় 8.5 মিলিয়ন সারি এবং 17 কলাম সহ
    • কয়েক হাজার সারি (k 2 কে) 17 টির পরিবর্তে কেবল একটি কলাম সহ বিকৃত
      • এগুলি সম্পূর্ণ গুরুত্বহীন এবং বাদ দেওয়া যায়
    • এই ফাইলটি থেকে আমার কেবলমাত্র 100,000 ডলার সারি প্রয়োজন (নীচে দেখুন)

ডেটা উদাহরণ:

County; State; Year; Quarter; Segment; Sub-Segment; Sub-Sub-Segment; GDP; ...
Ada County;NC;2009;4;FIRE;Financial;Banks;80.1; ...
Ada County;NC;2010;1;FIRE;Financial;Banks;82.5; ...
NC  [Malformed row]
[8.5 Mill rows]

আমি কয়েকটি কলাম কাটতে চাইছি এবং 40 টি উপলভ্য বছরের মধ্যে দুটি (1980-2020 থেকে ২০০৯-২০১ pick) বাছাই করতে চাই, যাতে তথ্যটি আর-তে ফিট করতে পারে:

County; State; Year; Quarter; Segment; GDP; ...
Ada County;NC;2009;4;FIRE;80.1; ...
Ada County;NC;2010;1;FIRE;82.5; ...
[~200,000 rows]

ফলাফল:

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

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

এছাড়া উল্লেখ করা উচিত এই হল অনেক কম পাইথন তুলনায় দক্ষ ... হিসেবে, পাইথন 5 মিনিটের মধ্যে 3.5GB ফাইল মাধ্যমে chomps আর 60 লাগবে যখন ... কিন্তু যদি সব আপনার আছে আর হয় তাহলে এই টিকেট।

## Open a connection separately to hold the cursor position
file.in <- file('bad_data.txt', 'rt')
file.out <- file('chopped_data.txt', 'wt')
line <- readLines(file.in, n=1)
line.split <- strsplit(line, ';')
# Stitching together only the columns we want
cat(line.split[[1]][1:5], line.split[[1]][8], sep = ';', file = file.out, fill = TRUE)
## Use a loop to read in the rest of the lines
line <- readLines(file.in, n=1)
while (length(line)) {
  line.split <- strsplit(line, ';')
  if (length(line.split[[1]]) > 1) {
    if (line.split[[1]][3] == '2009') {
        cat(line.split[[1]][1:5], line.split[[1]][8], sep = ';', file = file.out, fill = TRUE)
    }
  }
  line<- readLines(file.in, n=1)
}
close(file.in)
close(file.out)

পদ্ধতির দ্বারা ব্যর্থতা:

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

4
যদি আপনার মানদণ্ডটি যথেষ্ট সহজ হয় তবে আপনি সম্ভবত ব্যবহার করতে sedএবং / অথবা awkআপনি সরাসরি পড়তে পারেন এমন CSV এর একটি কাটা-ডাউন সংস্করণ তৈরি করে চলে যেতে পারেন। যেহেতু এটি উত্তরের চেয়ে কাজের দিক থেকে বেশি, তাই আমি এটি একটি মন্তব্য হিসাবে রেখে দেব leave
হ্যাঙ্ক গে

আমি হ্যাঁক সাথে একমত - আপনি কাজের জন্য ডান টুল ব্যবহার করা উচিত, এবং যদি এটা সহজ ডাটা পরিস্কার / অপ্রাসঙ্গিক সারি সরানোর এর / কলাম কমান্ড লাইন প্রবাহ সরঞ্জামের মত সাজানোর / কিন্তু / awk মহান এবং হতে যাচ্ছে উপায় কম আর বেশি নিবিড় সম্পদ বা অজগর - আপনি যদি আপনার ফাইল ফর্ম্যাটটির একটি নমুনা দেন তবে আমরা সম্ভবত একটি উদাহরণ দিতে পারি
অ্যারন স্ট্যাথাম

দুর্দান্ত আপনি কী আবিষ্কার করেছেন তা আমাদের জানান।
শেন

@ হ্যাঙ্ক অ্যান্ড অ্যারন: আমি কাজের জন্য সঠিক সরঞ্জামটি ব্যবহার করার জন্য সাধারণত সবাই আছি, তবে এটি কাজটির একটি উইন্ডোজ মেশিনে দেওয়া হয়েছে এবং আমি যখন যাব আমি আর শিখছি, আমি অনুভব করেছি যে এটি একটি ভাল অনুশীলন পূর্বের সেরা অভ্যাস হবে এবং এটি সম্ভব হলে কেবল আর-হিসাবে চেষ্টা করুন।
এফটিউইন

4
ভবিষ্যতের রেফারেন্সের জন্য, ডেটা.টিবল আর প্যাকেজটি পরীক্ষা করে দেখুন। freadফাংশন অনেক দ্রুত চেয়ে read.tablex = fread(file_path_here, data.table=FALSE)এটি কোনও data.frameবস্তু হিসাবে লোড করার মতো কিছু ব্যবহার করুন ।
paleo13

উত্তর:


40

আমার চেষ্টা readLines। একটি কোডের এই অংশটি csvনির্বাচিত বছরগুলি সহ তৈরি করে ।

file_in <- file("in.csv","r")
file_out <- file("out.csv","a")
x <- readLines(file_in, n=1)
writeLines(x, file_out) # copy headers

B <- 300000 # depends how large is one pack
while(length(x)) {
    ind <- grep("^[^;]*;[^;]*; 20(09|10)", x)
    if (length(ind)) writeLines(x[ind], file_out)
    x <- readLines(file_in, n=B)
}
close(file_in)
close(file_out)

আমি ঠিক লিখছিলাম এটি প্রায় ঠিক এটি। আমি মনে করি এটি মেমরির সীমাবদ্ধতা, মিশ্রিত ধরণের এবং ত্রুটিযুক্ত সারি দেওয়া সর্বোত্তম উত্তর হবে।
এফটিউইন

10

আমি এতে কোনও বিশেষজ্ঞ নই, তবে আপনি মানচিত্রের চেষ্টা করার বিষয়টি বিবেচনা করতে পারেন , যার অর্থ মূলত "বিভাজন এবং বিজয়" পদ্ধতির গ্রহণ করা। আর এর জন্য কয়েকটি বিকল্প রয়েছে, যার মধ্যে রয়েছে:

  1. মানচিত্রচর্চা (খাঁটি আর)
  2. RHIPE (যা ব্যবহার Hadoop এর ); সাবসেটিং ফাইলের উদাহরণের জন্য ডকুমেন্টেশনে 6.2.2 উদাহরণ দেখুন

বিকল্পভাবে, আর মেমরির বাইরে (ডিস্কে) যায় এমন বড় ডেটা মোকাবেলায় বেশ কয়েকটি প্যাকেজ সরবরাহ করে। আপনি সম্ভবত একটি মধ্যে পুরো ডেটা সেটটি লোড পারে bigmemoryবস্তু এবং আর দেখুন মধ্যে সম্পূর্ণরূপে হ্রাস না http://www.bigmemory.org/ সরঞ্জাম এই হ্যান্ডেল করতে একটি সেট জন্য।


ভাল পরামর্শ, তবে আমার কাছে মানচিত্রে এবং এর ইলিকের সাথে খুব বেশি অভিজ্ঞতা নেই। আমি এটি পড়তে হবে।
এফটিউইন

bigmemoryআপনার ক্ষেত্রে প্রথমে চেষ্টা করা সহজ হতে পারে easier
শেন

10

আর-তে কোনও সময় ফাইলগুলিতে কোনও টুকরো পড়ার মতো উপায় আছে কি?

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

আপনার যদি আরও গতির প্রয়োজন হয় তবে মানচিত্র হ্রাস ব্যবহারের জন্য শেনের প্রস্তাবনাটি খুব ভাল। তবে আপনি যদি ইসি 2 তে একটি বড় মেমরি উদাহরণ ব্যবহারের পথে যান তবে আপনাকে কোনও মেশিনে সমস্ত কোর ব্যবহারের জন্য মাল্টিকোর প্যাকেজটি দেখতে হবে।

আপনি যদি নিজেকে আর-তে ডিলিমিটেড ডেটাগুলির অনেকগুলি গ্রন্থ পড়তে চান তবে আপনার কমপক্ষে স্ক্যালডিএফ প্যাকেজটি নিয়ে গবেষণা করা উচিত যা আপনাকে আর থেকে সরাসরি স্ক্যাকল্ডে আমদানি করতে পারে এবং তারপরে আর এর মধ্যে থেকে ডেটা পরিচালনা করতে পারে I've এই পূর্ববর্তী প্রশ্নে উল্লিখিত হিসাবে আর-তে জিগের ডেটা আমদানির দ্রুততম উপায় ।


আমি একটি ইসি 2 উদাহরণটি মনে রাখব, তবে এই মুহুর্তে আমি আমার ডেস্কটপে আটকে থাকি এবং এটি 2 জিবি র‌্যাম। sqldf অবশ্যই মনে হচ্ছে আমার মনে কি ছিল। যাইহোক, এটি ত্রুটিযুক্ত ত্রুটিযুক্ত সারিতেও চাপ দেয় (17 টি কলাম হওয়া উচিত, তবে কয়েক হাজার সারিতে কেবল একটি থাকতে পারে)। এটি কি অন্য কোনও প্রিপ্রোসেসিং পদ্ধতির জন্য আহ্বান জানায়, বা কোনও বিকল্প নেই যা আমি মিস করছি?
এফটিউইন

6

কলবাইকোল নামে একটি ব্র্যান্ড-নতুন প্যাকেজ রয়েছে যা আপনাকে প্রচুর পাঠ্য ফাইল থেকে আপনার পছন্দসই ভেরিয়েবলগুলি পড়তে দেয়:

http://colbycol.r-forge.r-project.org/

এটি কোনও আর্গুমেন্ট পঠনযোগ্যতার সাথে পাশ করে, তাই সংমিশ্রণটি আপনাকে বেশ শক্তভাবে সাবসেট করা উচিত।


6

ffপ্যাকেজ বিশাল ফাইলগুলির সাথে মোকাবিলা করার জন্য একটি স্বচ্ছ উপায়।

আপনি প্যাকেজ দেখতে পাবেন ওয়েবসাইট এবং / অথবা এটি সম্পর্কে একটি উপস্থাপনা পারেন।

আশা করি এটা কাজে লাগবে


6

ব্যবহার readrএবং কী সম্পর্কেread_*_chunked পরিবার ?

সুতরাং আপনার ক্ষেত্রে:

testfile.csv

County; State; Year; Quarter; Segment; Sub-Segment; Sub-Sub-Segment; GDP
Ada County;NC;2009;4;FIRE;Financial;Banks;80.1
Ada County;NC;2010;1;FIRE;Financial;Banks;82.5
lol
Ada County;NC;2013;1;FIRE;Financial;Banks;82.5

আসল কোড

require(readr)
f <- function(x, pos) subset(x, Year %in% c(2009, 2010))
read_csv2_chunked("testfile.csv", DataFrameCallback$new(f), chunk_size = 1)

এটি fপ্রতিটি অংশের জন্য প্রযোজ্য , কর্ন-নামগুলি মনে করে এবং শেষের দিকে ফিল্টার করা ফলাফলগুলিকে একত্রিত করে। দেখা?callbackএই উদাহরণের উত্সটি ।

এর ফলে:

# A tibble: 2 × 8
      County State  Year Quarter Segment `Sub-Segment` `Sub-Sub-Segment`   GDP
*      <chr> <chr> <int>   <int>   <chr>         <chr>             <chr> <dbl>
1 Ada County    NC  2009       4    FIRE     Financial             Banks   801
2 Ada County    NC  2010       1    FIRE     Financial             Banks   825

আপনি এমনকি বৃদ্ধি করতে পারেন chunk_sizeতবে এই উদাহরণে কেবল 4 টি লাইন রয়েছে।


5

আপনি এসকিউএল ডাটাবেসে ডেটা আমদানি করতে পারেন এবং তারপরে সাবসেটগুলি নির্বাচন করতে আরএসকিউয়ালাইট ব্যবহার করতে পারেন ।


একটি ভাল পরিকল্পনা, তবে যেহেতু স্ক্লাডএফটি পর্দার অন্তরালে যা করে তা আমি পছন্দ করি। যদি আপনি সরল আরএসকিউলাইট ব্যবহার করেন তবে ত্রুটিযুক্ত সারিগুলি হ্যান্ডেল করার সর্বোত্তম উপায় না থাকলে?
এফটিউইন


3

নিজেকে এমএস অ্যাক্সেস সীমাবদ্ধতা থেকে রক্ষা করতে আপনি মাইএসকিউএল বা পোস্টগ্রিএসকিউএল এ স্থানান্তর করতে পারেন।

এই সিস্টেমগুলিতে ডিবিআই (সিআরএএন-তে উপলব্ধ) ভিত্তিক ডাটাবেস সংযোজকের সাথে আর সংযোগ স্থাপন করা বেশ সহজ ।


আরও ভাল ডেটাবেস সরঞ্জাম ব্যবহার করার জন্য স্পর্শ, কিন্তু যেহেতু এটি প্রশাসনিক ঝামেলা জড়িত (বড় সংস্থাগুলিতে প্রশাসনের নিয়মনীতিগুলি পছন্দ করতে হবে), তাই আমার যা আছে তা দিয়ে আমি চেষ্টা করে যাচ্ছি। এছাড়াও, আমি যতটা সম্ভব টেক্সট ফাইলটি পেয়েছি তার মধ্যে কয়েকটি কথোপকথনের লক্ষ করছি।
এফটিউইন

3

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


আমি এটি পরীক্ষা করে দেখব, তবে ফাইলটি তারিখের মতো সহায়ক কোনও দ্বারা অর্ডার করা হয়নি। সরবরাহকারীরা মনে করছেন যে কোনও প্রদত্ত কাউন্টি কোন অঞ্চলে প্রবেশ করেছে / দীর্ঘশ্বাস
ফেলুন

আমি মনে করি আপনি তাঁর প্রস্তাবটিকে ভুল বুঝেছেন: আপনার ফাইলটি খণ্ড খণ্ড করে পড়ুন, এবং প্রতিটি খণ্ড থেকে আপনার প্রয়োজনীয় সারিগুলি বের করুন। ফাইলগুলি অর্ডার করার প্রয়োজন নেই।
কার্ল ফোরনার

2

আজকাল, 3.5 জিবি ঠিক তেমন বড় নয়, আমি অ্যামাজনের মেঘে $ 2.80 / ঘন্টা ধরে 244 জিবি র‌্যাম (r3.8xlarge) সহ একটি মেশিনে অ্যাক্সেস পেতে পারি। বিগ-ডেটা টাইপ সমাধান ব্যবহার করে কীভাবে সমস্যাটি সমাধান করবেন তা নির্ধারণ করতে আপনার কত ঘন্টা সময় নেবে? আপনার সময় মূল্য কত? হ্যাঁ এডাব্লুএস কীভাবে ব্যবহার করতে হয় তা নির্ধারণ করতে আপনার এক বা দুই ঘন্টা সময় লাগবে - তবে আপনি একটি ফ্রি স্তরে বেসিকগুলি শিখতে পারেন, ডেটা আপলোড করতে পারেন এবং এটির জন্য এটি পরীক্ষা করতে প্রথমে 10 কে লাইন পড়তে পারেন এবং তারপরে আপনি একটি গুলি চালিয়ে যেতে পারেন r3.8xlarge এর মতো বড় মেমরির উদাহরণ এবং এটি সব পড়ুন! শুধু আমার 2 সি।


2020 সালের ডিসেম্বরে, এডাব্লুএস ইসি 2 তে 24 টিবি মেশিন পাওয়া সম্ভব! এই দিনগুলিতে আমি নিয়মিত আমার সার্ভারে 20 গিগাবাইট সিএসভি ফাইলগুলিতে পড়ি এবং এতে কিছুটা সময় লাগে :)। পরিশ্রমের জন্য শুকরিয়া ধন্যবাদ!
শান

0

এখন, 2017, আমি স্পার্ক এবং স্পার্কআর যাওয়ার পরামর্শ দেব suggest

  • সিনট্যাক্সটি একটি সহজ বরং dplyr- অনুরূপভাবে লেখা যেতে পারে

  • এটি ছোট স্মৃতিতে (2017 এর অর্থে ছোট) বেশ ভাল ফিট করে

তবে এটি শুরু করার জন্য ভয়ঙ্কর অভিজ্ঞতা হতে পারে ...


(স্পার্কলিআর প্যাকেজটি এর সিনট্যাক্স সম্পর্কে বেশি কিছু না জেনে স্পার্কলি ব্যবহার করা সম্ভব করে))
মাইকেল

-3

আমি একটি ডিবিতে যাব এবং তারপরে ডিবিআইয়ের মাধ্যমে আপনার প্রয়োজনীয় নমুনা বের করার জন্য কিছু প্রশ্ন করব

এসকিউএলাইটে একটি 3,5 গিগাবাইট সিএসভি ফাইল আমদানি করুন। অথবা কমপক্ষে দ্বিগুণ পরীক্ষা করে দেখুন যে আপনার বিশাল ডিবি এসকিউএলাইট সীমাতে ফিট করে, http://www.sqlite.org/limits.html

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

আর এবং মাইএসকিউএল চালিত সার্ভারটি ইনস্ট্যান্ট করার জন্য অ্যামাজনের ইসি 2 একটি ভাল সমাধান হতে পারে।

আমার দুটো নম্র মূল্য!


18
স্ক্লাইটের জন্য কীভাবে 3.5 জিবি বড়? যতক্ষণ আপনি উপযুক্ত ফাইল সিস্টেম ব্যবহার করছেন ততক্ষণ কোনও সমস্যা হওয়ার দরকার নেই (আমি নিয়মিত একক ব্যবহারকারী অ্যাপ্লিকেশনগুলির জন্য> 30 জিবি স্ক্লাইট ডিবিএস ব্যবহার করছি)
অ্যারন স্ট্যাথাম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.