Skip to content

Instantly share code, notes, and snippets.

View NoSQLデータモデリング技法.markdown

#NoSQLデータモデリング技法

原文:NoSQL Data Modeling Techniques « Highly Scalable Blog

I translated this article for study. contact matope[dot]ono[gmail] if any problem.

NoSQLデータベースはスケーラビリティ、パフォーマンス、一貫性といった様々な非機能要件から比較される。NoSQLのこの側面は実践と理論の両面からよく研究されている。ある種の非機能特性はNoSQLを利用する主な動機であり、NoSQLシステムによく適用されるCAP定理がそうであるように分散システムの基本的原則だからだ。一方で、NoSQLデータモデリングはあまり研究されておらず、リレーショナルデータベースに見られるようなシステマティックな理論に欠けている。本稿で、私はデータモデリングの視点からのNoSQLシステムファミリーの短い比較といくつかの共通するモデリングテクニックの要約を解説したい。

本稿をレビューして文法を清書してくれたDaniel Kirkdorfferに感謝したいと思う

@daichan4649
daichan4649 / 01_google.js
Last active Apr 18, 2018
[GAS] create short url (google, bitly)
View 01_google.js
// Google URL Shortener
// https://developers.google.com/url-shortener/v1/getting_started
function createGoogleShortUrl(url) {
var result = UrlShortener.Url.insert({
longUrl: url
});
return result.id;
}
@daichan4649
daichan4649 / メイン画面(現在).xml
Last active Sep 6, 2017
メイン画面のレイアウト
View メイン画面(現在).xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="daichan4649.jazzspotfukuoka.view.activity.MainActivity">
View android_material_design_colours.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- google's material design colours from
http://www.google.com/design/spec/style/color.html#color-ui-color-palette -->
<!--reds-->
<color name="md_red_50">#FFEBEE</color>
<color name="md_red_100">#FFCDD2</color>
<color name="md_red_200">#EF9A9A</color>
@daichan4649
daichan4649 / main.gs
Created Jun 27, 2017
scrape subway status
View main.gs
var URL_SUBWAY = "http://subway.city.fukuoka.lg.jp/status/";
var REGEXP_STATUS = /<div class=\"statusNews\">(.*)<\/div>/gi;
function doGet() {
var status = scrapeSubwayStatus();
Logger.log(status);
var json = {};
json['status'] = status;
json['url'] = URL_SUBWAY;
@daichan4649
daichan4649 / InitServlet.java
Last active Jan 7, 2019
welcome ファイルで Servlet を指定+トップページ(index.jsp)へ遷移するパターン
View InitServlet.java
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class InitServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response)
@daichan4649
daichan4649 / code.gs
Created Feb 6, 2017
notify last report
View code.gs
var URL_BOOK = '[https://docs.google.com/spreadsheet/ccc?key=xxxxx]';
var SHEET_NAME = '[sheet name]';
var ROW_NUM_TITLE = 15; // タイトル行(jsonの'key'になる行)
function doGet(e) {
var json = createJson();
return JSON.stringify(json);
}
function createJson() {
@daichan4649
daichan4649 / Event.java
Last active Nov 15, 2016
AndroidStudio+GAE/J+Jersey sample
View Event.java
package daichan4649.jersey;
public class Event {
private String ymd;
private String name;
public Event(String ymd, String name) {
this.ymd = ymd;
this.name = name;
}
@daichan4649
daichan4649 / main.gs
Last active Mar 25, 2016
spreadsheet -> google calendar へ一括登録
View main.gs
var URL_BOOK = '[spreadsheet URL]';
var SHEETNAME = '[sheet name]';
var CALENDAR_ID = '[calendar id]';
function onOpen() {
SpreadsheetApp.getUi()
.createMenu('管理者用')
.addItem('カレンダーへ登録', 'register')
.addToUi();
}
@daichan4649
daichan4649 / JsonUtil.java
Created Dec 9, 2014
gson sample (JSON -> model)
View JsonUtil.java
public interface JsonModel {
// model
}
public class JsonUtil {
@SuppressWarnings("unchecked")
public static <T> T fromJson(String jsonText, Class<? extends JsonModel> T) {
Gson gson = new Gson();
return (T) gson.fromJson(jsonText, T);
}
You can’t perform that action at this time.